使用来自django模型表单的现有数据填充CheckboxSelectMultiple

时间:2011-09-09 16:52:38

标签: django django-forms

希望有人可以帮我解决这个问题。我正在开发一个通知应用程序,用户可以在提交特定类别的博客帖子时注册接收电子邮件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

基本上,表单应该只显示上面模型中定义的多对多字段类别。表格看起来像

的ModelForm

class BlogNotificationsForm(forms.ModelForm):

    class Meta:
        model = BlogNotifications
        exclude = ('user', 'sites',)
        widgets = {
            'categories': forms.widgets.CheckboxSelectMultiple(),
        }

表单正在将多对多字段呈现为正确的复选框,但我想知道如何使用现有数据填充这些复选框,即用户已选择接收有关媒体,购买和计划的博客电子邮件当用户导航回页面时,应显示这些复选框。

我已经尝试在ModelForm上定义queryset选项,但似乎没有为我做任何事情..非常感谢任何帮助

干杯

2 个答案:

答案 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))

我希望这可能会对未来的某个人有所帮助,对我来说,文档真的不是那么清楚!!