1

我想forms.ModelMultipleChoiceField在表格中使用。我知道它需要一个查询集,但是我将使用的查询集采用我通常使用 request.user 在视图中传递的参数用户。但是这是一种形式,我如何传递 request.user?我需要吗?

Entry.objects.filter(request.user)
4

1 回答 1

3

您应该覆盖表单的 init 方法:

class MyForm(forms.ModelForm):

    class Meta:
        model = Entry

    def __init__(self, user=None, *args, **kwargs):
        super(MyForm, self).__init__(*args,**kwargs)
        if user is not None:
            form_choices = Entry.objects.filter(user)
        else:
            form_choices = Entry.objects.all()

        self.fields['my_mfield'] = forms.ModelMultipleChoiceField(
                                       queryset=form_choices
                                   )

在您看来,是时候实例化表​​单了:

form = MyForm(request.user)

或者

form = MyForm()
于 2013-03-21T22:47:36.577 回答