__call __()缺少1个仅关键字必需的参数:'manager'

时间:2020-01-16 16:04:10

标签: python django

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参数(Project模型的对象)时,它无法为任务字段设置初始值,而当我删除此字段的初始值时,它可以正常工作

2 个答案:

答案 0 :(得分:2)

找到了答案。 由于ManyToManyField值不是QuerySet对象,因此必须像对Model.objects一样进行过滤

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

答案 1 :(得分:0)

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

enrollments = user.enrollments().all()

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

enrollments = user.enrollments.all()

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