Django-filter: рд▓реЗрдЦрди рддреНрд░реБрдЯрд┐: рдЕрдЬрдЧрд░ 3.5 рдореЗрдВ odict_items рд╡рд╕реНрддреБрдУрдВ рдЕрдЪрд╛рд░ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛

рдХреЛ рдирд┐рд░реНрдорд┐рдд 14 рдирд╡ре░ 2016  ┬╖  7рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: carltongibson/django-filter

рд╣реИрд▓реЛ, рдореИрдВрдиреЗ рдЕрдЬрдЧрд░> = 3.5 рдореЗрдВ рдлрд╝рд┐рд▓реНрдЯрд░рд╕реЗрдЯ-рд╡реНрдпреБрддреНрдкрдиреНрди рд╡рд░реНрдЧ рдХреА рддрд╛рддреНрдХрд╛рд▓рд┐рдХрддрд╛ рдХреЗ рджреМрд░рд╛рди рдПрдХ рддреНрд░реБрдЯрд┐ рдкрдХрдбрд╝реАред 3.4 рдореЗрдВ рд╕рдм рдХреБрдЫ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

File "/home/dan/venvs/notes3.5/lib/python3.5/site-packages/django_filters/filterset.py" in __init__
  291.         self.filters = copy.deepcopy(self.base_filters)

File "/home/dan/venvs/notes3.5/lib/python3.5/copy.py" in deepcopy
  182.                 y = _reconstruct(x, rv, 1, memo)

File "/home/dan/venvs/notes3.5/lib/python3.5/copy.py" in _reconstruct
  320.                 value = deepcopy(value, memo)

File "/home/dan/venvs/notes3.5/lib/python3.5/copy.py" in deepcopy
  182.                 y = _reconstruct(x, rv, 1, memo)

File "/home/dan/venvs/notes3.5/lib/python3.5/copy.py" in _reconstruct
  297.             state = deepcopy(state, memo)

File "/home/dan/venvs/notes3.5/lib/python3.5/copy.py" in deepcopy
  155.         y = copier(x, memo)

File "/home/dan/venvs/notes3.5/lib/python3.5/copy.py" in _deepcopy_dict
  243.         y[deepcopy(key, memo)] = deepcopy(value, memo)

File "/home/dan/venvs/notes3.5/lib/python3.5/copy.py" in deepcopy
  155.         y = copier(x, memo)

File "/home/dan/venvs/notes3.5/lib/python3.5/copy.py" in _deepcopy_dict
  243.         y[deepcopy(key, memo)] = deepcopy(value, memo)

File "/home/dan/venvs/notes3.5/lib/python3.5/copy.py" in deepcopy
  174.                         rv = reductor(4)

Exception Type: TypeError at /notes/
Exception Value: can't pickle odict_items objects

рдореЗрд░реЗ рдлрд╝рд┐рд▓реНрдЯрд░рд╕реЗрдЯ рд╡рд░реНрдЧ рдХрд╛ рдЙрджрд╛рд╣рд░рдгред рдлреАрд▓реНрдбреНрд╕ рдбреЗрдЯрдЯрд╛рдЗрдордлрд┐рд▓реНрдЯрд░ рдФрд░ рдХреЙрдорд╛рд╕реЗрдкрд░реЗрдЯреЗрдб рдЪрд╛рд░рдлрд┐рд▓реНрдЯрд░ рдХрд╕реНрдЯрдо рд╣реИрдВ:

class NoteListFilterset(django_filters.FilterSet):
    strict = STRICTNESS.RAISE_VALIDATION_ERROR

    keywords = CommaSeparatedCharFilter(name='keyword', lookup_expr='in')
    datetime_from = DateTimeFilter(name='datetime', lookup_expr='gte')
    datetime_to = DateTimeFilter(name='datetime', lookup_expr='lte')
    get_hidden = django_filters.MethodFilter(method='filter_by_get_hidden')

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рдЕрднреА рднреА рдЗрд╕ рдореБрджреНрджреЗ рдореЗрдВ рдЪрд▓ рд░рд╣реЗ рд╣реИрдВ, рдореИрдВрдиреЗ рдЗрд╕реЗ рдЗрд╕ рддрд░рд╣ рд╣рд▓ рдХрд┐рдпрд╛:

list(CATEGORIES.items())

рд╕рднреА 7 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рд╣рд╛рдп @dangusevред рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЗрд╕рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИред рджреЛ рд╡рд┐рдЪрд╛рд░:

  • рдкрд░реАрдХреНрд╖рдг рд╕реВрдЯ рдЕрдЬрдЧрд░ 3.5 рдХреЗ рдЦрд┐рд▓рд╛рдл рдЪрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕ рддрд░рд╣ рдХрд╛ рдореБрджреНрджрд╛ рдЙрдард╛рдпрд╛ рдЬрд╛рддрд╛ред
  • base_filters рдПрдХ OrderedDict base_filters рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рди рдХрд┐ odict_items ред рдХреНрдпрд╛ рдХреБрдЫ base_filters рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░ рд░рд╣рд╛ рд╣реИ?

рдорд╛рдл рдХрд░рдирд╛ рдореЗрд░рд╛ рдмреБрд░рд╛)ред рдореЗрд░реЗ рдкрд╛рд╕ рдЗрд╕ рддрд░рд╣ рдХреЗ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдХреЛрдб рд╣реИрдВ:

category = ChoiceField(choices=CATEGORIES.items())

рдЬрдм copy.deepcopy() рдХреЛ self.base_fields рдкрд░ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ рддреЛ рдпрд╣ рдлрд╝реАрд▓реНрдб рдХреЗ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЛ рдЪреБрдирдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╡рд┐рдлрд▓ рд░рд╣рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдореЗрдВ dict_items рдЯрд╛рдЗрдк рд╣реЛрддрд╛ рд╣реИред

рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рдЕрднреА рднреА рдЗрд╕ рдореБрджреНрджреЗ рдореЗрдВ рдЪрд▓ рд░рд╣реЗ рд╣реИрдВ, рдореИрдВрдиреЗ рдЗрд╕реЗ рдЗрд╕ рддрд░рд╣ рд╣рд▓ рдХрд┐рдпрд╛:

list(CATEGORIES.items())

[рдкрд╛рдпрдерди рей.реорел рдФрд░ Django рей.рез.рез рдХреЗ рд╕рд╛рде] рдЗрд╕реА рддрд░рд╣, рдореБрдЭреЗ рдпрд╣ рддреНрд░реБрдЯрд┐ рдореЗрд░реА рд╕реВрдЪреА рджреГрд╢реНрдпреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдореЗрдВ рдорд┐рд▓ рд░рд╣реА рд╣реИ:

TypeError: cannot pickle 'dict_items' object

рдмреИрдХрдЯреНрд░реИрдХ рдореЗрдВ рдХреБрдЫ рднреА рдореЗрд░реЗ рдХреЛрдб рдореЗрдВ рдирд╣реАрдВ рд╣реИ:
https://pastebin.com/S4xn8zpT

рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рд╕рдорд╕реНрдпрд╛ рдореЗрд░реЗ рдореЙрдбрд▓ рдореЗрдВ choices рд╕реВрдЪреА рдХреЛ CharField рдореЗрдВ рдЬреЛрдбрд╝ рд░рд╣реА рдереА:

рд╡рд┐рдлрд▓ рд░рд╣рддрд╛ рд╣реИ:

record_request_status = models.CharField(max_length=4, null=True, choices=RECORD_REQUEST_STATUS)

рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ:

record_request_status = models.CharField(max_length=4, null=True)

RECORD_REQUEST_STATUS рдПрдХ рддрд╛рдирд╛рд╢рд╛рд╣реА рд╣реИ:

with open('case-manager/src/json_fixtures/record_request_status.json') as json_file:
        RECORD_REQUEST_STATUS = json.load(json_file).items()

рдореЙрдбрд▓ рдореЗрдВ рдЙрд╕реА choices рд╕реВрдЪреА рдХреЛ рдЕрдиреНрдп CharField s рдкрд░ рдЕрд╕рд╛рдЗрди рдХрд░рдирд╛ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рдЕрдиреНрдп choices рд╕реВрдЪрд┐рдпреЛрдВ рдХреЛ record_request_status рдЕрд╕рд╛рдЗрди рдХрд░рдирд╛ рднреА рд╡рд┐рдлрд▓ рд░рд╣рддрд╛ рд╣реИред

рдпрд╣ рдХрд╛рдо:

record_request_status = models.CharField(max_length=4, null=True, choices=list(RECORD_REQUEST_STATUS))

рдХреНрдпрд╛ рдХреЛрдИ рд╕рдордЭрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИ?

@paulschreiber рдЖрдкрдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ RECORD_REQUEST_STATUS рдХреЗрд╡рд▓ рдПрдХ рдЖрджрд┐рдо рд╕реВрдЪреА рдпрд╛ Tuple рдХреЗ рдмрдЬрд╛рдп dict_items рдкреНрд░рдХрд╛рд░ рджреЗрддрд╛ рд╣реИ .. dict_items рдЕрдЪрд╛рд░ рдХреЛ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЬреНрдЮрд╛рдд рдкреНрд░рдХрд╛рд░ рдирд╣реАрдВ рд╣реИ рдЗрд╕рд▓рд┐рдП рдпрд╣ рдЙрд╕ рддреНрд░реБрдЯрд┐ рдХреЛ рдлреЗрдВрдХрддрд╛ рд╣реИ . dict_items рдореЗрдВ рдПрдХ рдкреБрдирд░рд╛рд╡рд░реНрддрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдЧрд┐рдирдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдЪрд┐рдд рддрд░реАрдХреЗ рд▓рд╛рдЧреВ рдХрд┐рдП рдЧрдП рд╣реИрдВ, list рд╡рд┐рдзрд┐ рдЗрд╕реЗ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдХрд╛рдо рдХрд░рддреА рд╣реИ рдФрд░ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╡рд┐рдХрд▓реНрдк рдЕрдВрддрддрдГ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЖрдк рдХреНрдпрд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВред

рдЙрдореНрдореАрдж рд╣реИ, рдпрд╣ рдЗрд╕реЗ рдЕрдЪреНрдЫреЗ рд░реВрдк рдореЗрдВ рд╕рдордЭрд╛рддрд╛ рд╣реИ, рдореБрдЭреЗ рдЗрд╕реЗ рдЖрдЦрд┐рд░реА рдмрд╛рд░ рджреЗрдЦреЗ рд╣реБрдП рдХреБрдЫ рд╕рд╛рд▓ рд╣реЛ рдЧрдП рд╣реИрдВред

@ рд░рдпрд╛рдирдм 58 рдореБрдЭреЗ рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖрддрд╛ рдХрд┐ рдпрд╣ рдХреЗрд╡рд▓ рдЗрд╕ рдХреНрд╖реЗрддреНрд░ рдХреЗ рд▓рд┐рдП рдХреНрдпреЛрдВ рд╡рд┐рдлрд▓ рд░рд╣рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореЗрд░реЗ рд╡рд┐рднрд┐рдиреНрди рдореЙрдбрд▓реЛрдВ рдореЗрдВ рдЕрдиреНрдп рд╕рднреА рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рдорд╛рдорд▓реЗ рдореЗрдВ, рдореИрдВ рдПрдХ JSON рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкрдврд╝ рд░рд╣рд╛ рд╣реВрдВ рдЬреЛ рдПрдХ рд╢рдмреНрджрдХреЛрд╢ рд╣реИред

@paulschreiber рдореБрдЭреЗ рд╕рдорд╕реНрдпрд╛ рдореЗрдВ рджрд┐рд▓рдЪрд╕реНрдкреА рд╣реИ рд▓реЗрдХрд┐рди рдореИрдВ рдЗрд╕ рдзрд╛рдЧреЗ рдХреЛ рдЙрдбрд╝рд╛рдирд╛ рднреА рдирд╣реАрдВ рдЪрд╛рд╣рддрд╛ред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЗрд╕ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рджрд╛рдпрд░реЗ рд╕реЗ рдмрд╛рд╣рд░ рдХреБрдЫ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдореИрдВ рдЖрдкрдХреЛ рдПрдХ рдИрдореЗрд▓ рд╢реВрдЯ рдХрд░реВрдВрдЧрд╛ред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

hakib picture hakib  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

ses4j picture ses4j  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

xtrinch picture xtrinch  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

madelyneriksen picture madelyneriksen  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

edmorley picture edmorley  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ