如何将初始数据加载到ModelMultipleChoiceField - Django 1.6

时间:2014-07-11 13:28:16

标签: django-forms django-views

我正在使用Django创建我的第一个站点,并且无法将初始数据加载到链接到内置Django组表的ModelForm中。

现在,用户可以转到组页面并从他们想要加入的组数组中进行选择。当他们稍后返回页面时,他们再次看到相同的选项/复选框列表,而不指示他们已经属于哪些组。

我无法弄清楚如何将初始组数据加载到表单中,例如,如果您已经是“组1”的成员,则已选中该复选框。我也想拥有它以便您可以取消选中一个框,因此当您提交表单时,您可能会离开某些组并同时加入其他组。任何帮助赞赏!我的代码如下:

class GroupForm(ModelForm):        
    groupOptions = forms.ModelMultipleChoiceField(queryset=Group.objects.all(), label = "Choose your groups",
                                                  widget=forms.CheckboxSelectMultiple())
    class Meta:
        model = Group
        fields = ['groupOptions']


def groupSelect(request):
    if request.method == 'POST':
        form = GroupForm (request.POST)
        if form.is_valid():
            group = form.cleaned_data['groupOptions']
            request.user.groups = group
            return render (request, 'groups/groupSelect.html' , {'form':form})
    else:

        form = GroupForm()
        return render (request, 'groups/groupSelect.html' , {'form':form})

1 个答案:

答案 0 :(得分:0)

我花了几天时间试一试,但我自己想出了这个。只需修改上面代码中的倒数第二行。 ModelForm将所有可用组作为选项加载,下面的行会导致检查用户已属于的组。

form = GroupForm(initial = {' groupOptions&#39 ;: request.user.groups.all()})