Django在m2m中间表中保存项目列表

时间:2010-06-24 20:52:09

标签: django forms model m2m

我在一个类中有一个m2m字段,还有一个直通表。我不是表来保存直通表中的项目列表。 如果我有一个多选形式,如下所示,我希望能够保存所有选定的项目,我该怎么办?

我的模型表格如下:

class ClassroomForm(ModelForm):
    class Meta:
          model = Classroom
          fields = ['classname','members','private']

    def __init__(self, *args, **kwargs):
                creator = kwargs.pop('user')
  super(ClassroomForm, self).__init__(*args, **kwargs)
  relations = Relations.objects.filter(initiated_by = creator)
  self.fields["members"].queryset = \
       User.objects.filter(pk__in=[r.follow.pk for r in relations])

和我的保存方法如下:

def save_classroom(request):
   classroom_instance = Classroom()
   if request.method == 'POST':
        form = ClassroomForm(request.POST, request.FILES, user = request.user) 
        if form.is_valid():
           new_obj = form.save(commit=False)
           new_obj.user = request.user 
           new_obj.save()
           membership = Membership(member = HERE SELECTED ITEMS FROM FORM,classroom=new_obj)

           membership.save() 

如何做到这一点? 谢谢!

2 个答案:

答案 0 :(得分:1)

看起来你复制了你的问题。我在这里回答: Django m2m form save " through " table

答案 1 :(得分:0)

Django应该像处理任何其他模型一样处理多对多的ModelForms。

  

在表单上使用简单的save()时,所有数据(包括多对多数据)都可以保存,而无需任何其他方法调用。

参考: