Создайте экземпляр модели с InlinePanel в Wagtail - PullRequest
0 голосов
/ 06 ноября 2019

Есть ли у вас какие-либо идеи, как я могу создать экземпляр модели с помощью InlinePanel? Я не хочу добавлять уже существующий экземпляр, но хочу создать новый вместе с ParentalKey

* 1003. * в моем случае ParentalKey - это семья, а человек - ForeignKey здесь документация о трясогузке InlinePanel
@register_snippet
class Family(ClusterableModel):
    title = models.CharField(verbose_name=_("family title"), max_length=100)
    panels = Page.content_panels + [        
        InlinePanel("persons", label=_("Persons")),
    ]

class FamilyPerson(Orderable):
    person = models.ForeignKey("crm.Person", on_delete=models.CASCADE)
    family = ParentalKey(
        "crm.Family", on_delete=models.CASCADE, related_name="persons"
    )


@register_snippet
class Person(models.Model):
    SEX_CHOICES = [("M", _("Male")), ("F", _("Female"))]
    title = models.CharField(verbose_name=_("person title"), max_length=100)
    age = models.PositiveIntegerField(
        verbose_name=_("age")
    )
    sex = models.CharField(
        max_length=12, choices=SEX_CHOICES
    )

1 Ответ

0 голосов
/ 06 ноября 2019

Я нашел решение:

@register_snippet
class Family(ClusterableModel):
    title = models.CharField(verbose_name=_("family title"), max_length=100)
    panels = Page.content_panels + [        
        InlinePanel("persons", label=_("Persons")),
    ]

class Person(Orderable):
    family = ParentalKey(
        "crm.Family", on_delete=models.CASCADE, related_name="persons"
    )
    SEX_CHOICES = [("M", _("Male")), ("F", _("Female"))]
    title = models.CharField(verbose_name=_("person title"), max_length=100)
    age = models.PositiveIntegerField(
        verbose_name=_("age")
    )
    sex = models.CharField(
        max_length=12, choices=SEX_CHOICES


вот оно! Я просто усложнил это, это было так просто

...