1

カルーセルを作成するこれら 2 つの実装の違いは何ですか? どちらも同じことをしているように見えますが、一方には外部キーが明示的に定義されています。最初の実装は呼び出すことで簡単にプラグインできますが、2 番目の実装は ParentalKey を介してモデルに接続する必要があります。基本的に、ホームページに表示するカルーセルを実装するのに適したオプションはどれですか?

class ImageCarouselBlock(blocks.StructBlock):
    image = ImageChooserBlock()
    caption = blocks.TextBlock(required=False)
    page = PageChooserBlock()

    class Meta:
       icon = 'image'

class CarouselItem(LinkFields):
    image = models.ForeignKey(
        'wagtailimages.Image',
        null=True,
        blank=True,
        on_delete=models.SET_NULL,
        related_name='+'
    )
    link_url = models.models.ForeignKey(
        'wagtailcore.Page',
        null=True,
        blank=True,
        on_delete=models.SET_NULL,
        related_name='+'
    )
    caption = models.CharField(max_length=255, blank=True)

    panels = [
        ImageChooserPanel('image'),
        FieldPanel('link_url'),
        FieldPanel('caption'),
        MultiFieldPanel(LinkFields.panels, "Link"),
    ]

    class Meta:
        abstract = True
4

1 に答える 1