Django: Как добавить несколько форм на основе классов в одном представлении? - PullRequest
0 голосов
/ 10 апреля 2019

В моем models.py у меня есть родительский класс с одним дочерним и одним внуковым классом. Родитель имеет отношения один-ко-многим с ребенком, а ребенок - отношения один-ко-многим с внуком.

Я хотел бы создать представление (предпочтительно представление на основе классов, так как оно представляется наиболее простым для реализации), которое включает в себя 3 формы на основе классов, одну для родителя, несколько для ребенка и несколько для внука.

Я хотел бы получить представление, в котором я могу отправить форму, в которой будет создан один родитель с несколькими детьми и несколькими внуками.

Как мне лучше всего разработать такой вид?

models.py:

class Parent(models.Model):
    parent_propery_one = models.CharField(max_length=200)
    parent_propery_two = models.CharField(max_length=100)
    parent_propery_three = models.TextField()
    parent_property_four = models.URLField(max_length=300, null=True)
    parent_property_five = models.DateTimeField(default=timezone.now)
    parent_property_six = models.DateTimeField(auto_now=True)
    parent_property_seven = models.ForeignKey(User, on_delete=models.PROTECT)

...

class Child(models.Model):
    child_propery_one = models.CharField(max_length=200, unique=True)
    child_property_two = models.ForeignKey(Vilt, default=1, verbose_name="Bierviltje", on_delete=models.PROTECT)
    child_property_three = models.BooleanField()

...

class Grandchild(models.Model):
    grandchild_property_one = models.CharField(max_length=200)
    grandchild_property_two = models.ForeignKey(Pand, default=1, verbose_name="Pand", on_delete=models.PROTECT)
    grandchild_property_three = models.DecimalField(max_digits=4, decimal_places=2)
    grandchild_property_four = models.PositiveIntegerField()
    grandchild_property_five = models.DecimalField(max_digits=8, decimal_places=2)
    grandchild_property_six = models.DecimalField(max_digits=8, decimal_places=2, default=0)
    grandchild_property_seven = models.DecimalField(max_digits=8, decimal_places=2, default=0)
    grandchild_property_eight = models.DecimalField(max_digits=8, decimal_places=2)

views.py

class ParentCreateView(LoginRequiredMixin, CreateView):
    model = Parent
    template_name = 'parent/parent_form.html'
    fields = ['parent_property_one', 'parent_property_two', 'parent_property_three', 'parent_property_four', 'parent_property_five', 'parent_property_six']
    context_object_name = 'parents'

С этим кодом он, очевидно, возвращает только форму для родительского класса. Я хотел бы добавить в эту точку зрения также классы для детей и внуков. Каков наилучший подход для этого?

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