Отредактируйте противоположную сторону отношения многие ко многим с помощью общей формы Django - PullRequest
4 голосов
/ 31 марта 2010

У меня есть две модели:

 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, связывающая 2 модели многими со многими полями , я создал 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'
       )

но при этом извлекается вся информация, кроме множества "многие ко многим", сохраненного в этом объекте.

Я думаю, мне нужно сделать что-то похожее на это: Редактировать обе стороны M2M на странице администратора , но я не понял этого.

Как использовать универсальный объект update_object для редактирования другой стороны ссылки «многие ко многим»?

1 Ответ

1 голос
/ 11 апреля 2010

Я нашел ответ здесь:

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

...