В моем 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'
С этим кодом он, очевидно, возвращает только форму для родительского класса. Я хотел бы добавить в эту точку зрения также классы для детей и внуков. Каков наилучший подход для этого?