1

形で使いたいforms.ModelMultipleChoiceField。クエリセットが必要であることはわかっていますが、使用するクエリセットは、通常、request.user を使用してビューで渡す param ユーザーを使用します。ただし、これはフォームですが、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 に答える