【问题标题】:__call__() missing 1 required keyword-only argument: 'manager'__call__() 缺少 1 个必需的仅关键字参数:“经理”
【发布时间】:2020-01-16 16:04:10
【问题描述】:
class CreateProject(forms.ModelForm):
    def __init__(self, user, editable_object=None, *args, **kwargs):
        super(CreateProject, self).__init__(*args, **kwargs)
        use_required_attribute = True
        self.fields['tasks'] = forms.ModelMultipleChoiceField(
            widget=forms.SelectMultiple(
                attrs={
                    'class': 'form-control'
                }
            ),
            queryset=Task.objects.filter(company=user.company),
            required=True,
            initial=editable_object.tasks if editable_object else None,
            label='Tasks'
        )

当我尝试提供 editable_object 参数(项目模型的对象)时,它无法为任务字段创建初始值,当我删除该字段的初始值时它可以工作

【问题讨论】:

    标签: python django


    【解决方案1】:

    找到了答案。 由于 ManyToManyField 值不是 QuerySet 对象,我们必须像使用 Model.objects 一样过滤它

    initial=editable_object.tasks.all() if editable_object else None
    # code
    

    【讨论】:

      【解决方案2】:

      对于未来的访问者,我在执行以下操作时显示错误:

      enrollments = user.enrollments().all()
      

      将过滤更改为这种方式后,它是正确的:

      enrollments = user.enrollments.all()
      

      一个很好的例子帮助我克服了这个错误here!。

      【讨论】:

        猜你喜欢
        • 2018-09-23
        • 2018-07-26
        • 2022-08-19
        • 2022-11-17
        • 2022-11-10
        • 2022-10-30
        • 2021-06-20
        • 2022-10-06
        • 2022-10-09
        相关资源
        最近更新 更多