编辑许多的反面与Django的通用形式

编辑许多的反面与Django的通用形式

问题描述:

一对多的关系,我有两个型号:编辑许多的反面与Django的通用形式

class Actor(models.Model): 
    name = models.CharField(max_length=30, unique = True) 
    event = models.ManyToManyField(Event, blank=True, null=True) 

class Event(models.Model): 
    name = models.CharField(max_length=30, unique = True) 
    long_description = models.TextField(blank=True, null=True) 

在前面的问题:Django form linking 2 models by many to many field,我创建了一个保存功能的EventForm:

class EventForm(forms.ModelForm): 
     class Meta: 
      model = Event 

     def save(self, commit=True): 
      instance = forms.ModelForm.save(self) 
      instance.actors_set.clear() 
      for actor in self.cleaned_data['actors']: 
       instance.actors_set.add(actors) 
      return instance 

这使我可以从定义的m2m连接的另一端添加m2m链接。

现在我想编辑该条目。我一直在使用一个通用函数:

def generic_edit(request, modelname, object_id): 
     modelname = modelname.lower() 
     form_class = form_dict[modelname] 
     return update_object(request, 
      form_class = form_class, 
      object_id = object_id, 
      template_name = 'createdit.html' 
     ) 

但这会拉动所有的信息,除了保存到这个对象的多对多选择。

我想我需要做类似这样的事情:Editing both sides of M2M in Admin Page,但我还没弄明白。

如何使用通用update_object编辑多对多链接的另一端?

我在这里找到了答案:

http://www.djangosnippets.org/snippets/1295/