在 Wagtail 中使用 InlinePanel 创建模型实例

Create a model instance with InlinePanel in Wagtail

你知道如何使用 InlinePanel 创建模型的实例吗 我不想添加一个现有的实例,但我想创建一个新实例以及 ParentalKey

在我的例子中,ParentalKey 是家庭,人是 ForeignKey here the documentation about wagtail 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
    )

我找到了解决方案:

@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


就是这样!我只是把它复杂化了,原来如此简单