2010-03-31 1 views
4

J'ai deux modèles:Modifier le côté opposé d'une relation plusieurs à plusieurs avec django forme générique

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) 

Dans une question précédente: Django form linking 2 models by many to many field, je créé un EventForm avec une fonction de sauvegarde:

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 

Cela m'a permis d'ajouter des liens m2m de l'autre côté de la connexion m2m définie.

Maintenant, je veux éditer l'entrée. J'utilise une fonction générique:

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' 
     ) 

mais cela tire dans toutes les informations, sauf les nombreux à plusieurs sélections enregistrées à cet objet.

Je pense que je dois faire quelque chose de similaire à ceci: Editing both sides of M2M in Admin Page, mais je ne l'ai pas compris. Comment puis-je utiliser l'update_object générique pour modifier l'autre côté d'un lien plusieurs-à-plusieurs?

Répondre

Questions connexes