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

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

问题描述:

我在一个类中有一个m2m字段,并且有一个通过表。我不是表来保存通过表的项目列表。 如果我有一个多选择的形式,像下面,我想要能够保存所有选定的项目,我应该怎么做?Django在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() 

这可怎么办呢? 谢谢!

+1

可能重复(http://stackoverflow.com/questions/3074938/django-m2m-form-save-through-table) – Lekensteyn 2014-08-23 16:16:58

看起来你已经重复你的问题。我把答案在这里: Django m2m form save " through " table

[ “到” 表Django的M2M形式保存]的
+0

我见过并接受它!这是我正在寻找的东西。 Thnks! – dana 2010-06-26 22:20:19

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

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

参考:

+0

我必须将数据保存在中间'通过'表中。这就是为什么我想要初始化它。否则,我得到如下错误:无法在指定中介模型的ManyToManyField上设置值。改用会员经理。 – dana 2010-06-24 21:06:12