python – Django将用户传递给ModelForm以在ModelChoiceField查询中使用

所以,我有一个帖子的ModelForm.该表单包含一个ModelChoiceField,用于显示用户可以发布到的课程.我只希望用户发布他们订阅的课程.现在,每个课程都包含在课程查询集中.

基本上,我想将request.user传递给我的PostForm,并将其用于课程ModelChoiceField查询集.我现在正在使用这个代码;逻辑对我有意义,但它不起作用:/

class PostForm(forms.ModelForm):
    class Meta:
        model = Post
        fields = ('course', 'content', 'image')

    def __init__(self, *args, **kwargs):
        user = kwargs.pop("user", None)
        if user is not None:
            self.course.queryset = user.profile.courses.all()
        super(PostForm, self).__init__(*args, **kwargs)

   course = forms.ModelChoiceField(queryset=Course.objects.all())
   content = forms.CharField(widget=forms.Textarea(attrs={'rows': 5, 'cols': 50}))

我得到的错误是/’PostForm’对象没有属性’course’的AttributeError

解决方法:

正确的语法是这样的:

self.fields['course'].queryset = Course.objects.filter([...])

我建议你使用优秀的django braces.

UserKwargModelFormMixin就是你要找的.

上一篇:python – 在Django中生成独特的slug


下一篇:Django ModelForm 校验数据格式