用于ModelMultipleChoiceField的Django empty_label。关键字参数“ empty_label”的多个值

时间:2018-09-10 18:21:52

标签: django forms

我试图通过在字段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 :(得分:0)

根据comments here,这是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关键字参数。”