Django empty_label для ModelMultipleChoiceField. Несколько значений для ключевого аргумента 'empty_label' - PullRequest
0 голосов
/ 10 сентября 2018

Я пытаюсь поместить заполнитель в поле Select2, указав empty_label в поле. Теперь я получаю ошибку:

TypeError: __init__() got multiple values for keyword argument 'empty_label'

Вот мой код:

self.fields['work_types'] = ModelMultipleChoiceField(
    queryset=WorkTypes.objects.filter(
        white_label_client=logged_in_user.white_label_client,
        deleted=False),
    empty_label='Type',
    required=False)

Что я должен изменить?

1 Ответ

0 голосов
/ 17 июня 2019

Согласно комментариям здесь , это текущая ошибка в Django.Один из пользователей сказал:

«Глядя на это, я бы сказал, что это сделано специально. Вам не следует использовать пустую метку в поле с несколькими вариантами выбора. Возможно, это следует уточнить вдокументы.

Сказав это, если вы действительно хотите пустую метку в поле с множественным выбором, вы можете создать свой собственный класс, который инициализирует empty_label, как вы этого хотите. "

Дальнейшее объяснение

"Ну, это вызывает ошибку. Это ошибка Python. По сути, вы передавали аргумент ключевого слова (empty_label), а класс передавал тот же аргумент ключевого словапод названием empty_label. В развернутом виде, это то, что происходило: "

field = forms.ModelMultipleChoiceField( queryset = Imodelclass.objects.all(), empty_label='------------' ) = ModelMultipleChoiceField(queryset= Imodelclass.objects.all(), empty_label=None, empty_label='------------')

" Когда вы читаете ошибку, вы видите, что на самом деле очень ясно в этом контексте: вы передали два аргументадля того же ключевого слова. "

" Я думаю, что было бы разумно упомянуть об этом в документации; возможно, даже предоставив обоснование, почему ModelMultipleChoiceField не должен иметь пустую меткул.Но если за этим нет никакого обоснования, то ясное решение - сделать точно так же, как вы: удалите аргумент ключевого слова empty_label из супер-вызова. "

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...