我有一个在Django中提交新文章的表单,在这种形式下,您可以将该文章放置到'user_group'中,这只是组和用户之间的许多关系。但是,您只能将其添加到您所属的组中。使用表单类i的init函数可以传递额外的字段,并且我确实得到了我需要的正确选择,但是在提交时我得到一个错误''QueryDict'对象没有属性'all''在Django中动态生成的表单选择
I也不太清楚怎么回事错了,我的继承人形式:
class PostForm(BaseModelForm):
new_image = forms.ImageField(required=False)
#GROUPS = user.groups.all()
#group = forms.ChoiceField(choices=GROUPS, required=False)
def __init__(self,groups, *args, **kwargs):
super(PostForm, self).__init__(*args, **kwargs)
self.fields['group'].queryset = groups
class Meta:
model = Post
fields = ('title','category', 'group', 'text', 'description', 'style')
help_texts = {
'group': _('Do you want this published under your account or a group?')
}
和继承人在那里被抛出的错误观点:
@login_required
def post_new(request):
if request.method == "POST":
form = PostForm(request.POST, request.FILES)
if form.is_valid():
post = form.save(commit=False)
post.author = request.user
post.save()
return redirect('post_detail', pk=post.pk)
else:
form = PostForm(groups=request.user.user_groups.all())
return render(request, 'blog/post_edit.html', {'form': form})
这条线:
form = PostForm(groups=request.user.user_groups.all())
是我在哪里通过团体的选择,这会给你正确的选择。错误发生在提交的事实使我认为它是一个视图如何处理它的错误,但林不知道在哪里。
请修复缩进。具体而言,“类Meta”是否应该嵌套在“类PostForm”内部还不清楚。 – mkrieger1
您的模型窗体应该继承'models.ModelForm',而不是'BaseModelForm'。 – Alasdair
BaseModelForm是我用来将引导类添加到表单的扩展 –