有没有办法将自定义唯一标识符添加到鹡鸰块

Is there any way to add a custom unique identifier to a wagtail block

我想创建一个项目流场,每个项目都有一个自定义 ID。我创建了一个 'ItemBlock' 并添加了一个使用 uuid4 填充的 'unique_identifier' 属性。问题是每个项目都具有相同的 uuid。有没有办法为每个 ItemBlock 生成不同的 uuid?

class ItemBlock(blocks.StructBlock):
        
    unique_identifier = blocks.CharBlock(default=uuid.uuid4())
    item_name = blocks.CharBlock()
    body = blocks.RichTextBlock()


class CategoryBlock(blocks.StructBlock):
    title = blocks.CharBlock()

class ListPage(Page):
    subtitle = models.CharField(max_length=50)
    checklist = StreamField([('category', CategoryBlock()), ('checklist_item', ItemBlock())])

    
    content_panels = Page.content_panels + [
        FieldPanel('subtitle'),
        StreamFieldPanel('checklist'),
    ]

Wagtail 块已经有 UUID:

https://github.com/wagtail/wagtail/blob/master/wagtail/core/blocks/stream_block.py#L452

您可以使用 your_block.id 在模板中访问它们。

这对你有帮助吗?