希望有人可以帮我解决这个问题。我正在开发一个通知应用程序,用户可以在提交特定类别的博客帖子时注册接收电子邮件IE我只想要猫的媒体和购买电子邮件
我有一个定义为
的基本模型class BlogNotifications(models.Model):
user = models.ForeignKey(User)
sites = models.ManyToManyField(Site)
categories = models.ManyToManyField(Categories)
objects = models.Manager()
def __unicode__ (self):
return self.user.username
基本上,表单应该只显示上面模型中定义的多对多字段类别。表格看起来像
class BlogNotificationsForm(forms.ModelForm):
class Meta:
model = BlogNotifications
exclude = ('user', 'sites',)
widgets = {
'categories': forms.widgets.CheckboxSelectMultiple(),
}
表单正在将多对多字段呈现为正确的复选框,但我想知道如何使用现有数据填充这些复选框,即用户已选择接收有关媒体,购买和计划的博客电子邮件当用户导航回页面时,应显示这些复选框。
我已经尝试在ModelForm上定义queryset选项,但似乎没有为我做任何事情..非常感谢任何帮助
干杯
答案 0 :(得分:1)
在视图中,您可以像这样设置查询集:
form = BlogNotificationsForm()
form.fields["categories"].queryset = Categories.objects.all()
我找到了这个例子here
答案 1 :(得分:0)
实例化modelForm
时,我没有将BlogNotifications
模型的实例传递给它。所以在视图中,表单设置如下:
blogForm = BlogNotificationsForm(instance=BlogNotifications.objects.get(user=request.user))
我希望这可能会对未来的某个人有所帮助,对我来说,文档真的不是那么清楚!!