所以,我有一个帖子的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}))
我得到的错误是AttributeError at /'PostForm' object has no attribute 'course'
答案 0 :(得分:3)
正确的语法如下:
self.fields['course'].queryset = Course.objects.filter([...])
我建议你使用优秀的django braces。
UserKwargModelFormMixin
正是您要找的。 p>