2010-03-31 39 views
4

一對多的關係,我有兩個型號:編輯許多的反面與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編輯多對多鏈接的另一端?

回答