Django Inline Formset несколько моделей - PullRequest
0 голосов
/ 21 ноября 2018

TL; DR: мне нужен какой-то набор форм для наборов форм.

У меня есть две разные модели, связанные с одним бизнес-объектом, и мне нужно создать форму, чтобы редактировать обе модели как одну форму,И мне нужно создать много таких форм на одной странице, как это делает встроенный набор форм djngo.

Теперь у меня есть следующая вещь:

class Parent(models.Model):
  name = models.Charfield()

class FirstChild(models.Model):
  name = models.Charfield()
  e_id = models.IntegerField()
  parent = models.ForeignKey(Parent)

class FirstChildForm(django.forms.ModelForm):
    class Meta:
        model = Child
        fields = ('name', 'e_id', 'parent')
        widgets = {'parent': forms.TextInput}

И я рендеринг многих из них с использованиемвстроенные наборы форм:

formset_class = inlineformset_factory(Parent, FirstChild, 
                                      form=FirstChildForm, extra=1)

Но теперь мне нужно добавить вторую дочернюю модель и форму для нее, и все равно визуализировать ее как одну встроенную форму, немного заставив ее фактически редактировать две модели.Вот так:

class SecondChild(models.Model):
  name = models.Charfield()
  e_id = models.IntegerField()
  parent = models.ForeignKey(Parent)

class SecondChildForm(django.forms.ModelForm):
    class Meta:
        model = Child
        fields = ('name', 'e_id', 'parent')
        widgets = {'parent': forms.TextInput}

formset_class = inlineformset_factory(models=[Parent, FirstChild], 
                                      forms=[FirstChildForm, SecondChildForm], 
                                      extra=1)

Насколько я понимаю, наборы форм Django сейчас не могут работать с несколькими моделями.

Итак, какой способ выбрать для реализации этого поведения и не нарушать все концепции django?Я не могу использовать некоторые дополнительные библиотеки, поэтому мне нужно все реализовать самостоятельно, и я использую django 1.6, если это важно.

1 Ответ

0 голосов
/ 28 ноября 2018

Итак, наконец, я использовал этот подход в качестве основы: https://micropyramid.com/blog/how-to-use-nested-formsets-in-django/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...