小编axo*_*asm的帖子

使用或重用 Wagtail StreamField 块作为其他模型中的字段

我有一个 Wagtail 项目,有两个不同的Page模型,它们使用相同的画廊块,但方式不同。在一个模型中,我想在其他自由形式块的列表中使用图库;但在另一种模型中,只有一个画廊出现在页面上的特定位置。画廊非常复杂,有很多选项,例如autoadvance我不想在模型之间重复,并且很难将其移动到 mixin 中。gallery我可以通过向严格模型添加额外的 StreamField 来完成我想要的,如下所示:(content_panel等省略)

\n
# models.py\nfrom wagtail.models import Page\nfrom wagtail.core.fields import RichTextField, StreamField\nfrom wagtail.images.blocks import ImageChooserBlock\nfrom wagtail.core.blocks import (\n    RichTextBlock, \n    StructBlock, \n    StreamBlock,\n)\n\nclass ImageWithCaptionBlock(StructBlock):\n    image = ImageChooserBlock()\n    caption = RichTextBlock()\n\n\nclass GalleryBlock(StructBlock):\n    # lots of gallery options like \xe2\x80\x9cautoadvance\xe2\x80\x9d\n    items = StreamBlock([\n        (\'image\', ImageWithCaptionBlock()),\n        (\'video\', EmbedBlock()),\n    ])    \n\n\nclass FreeFormContentPage(Page):\n    body = StreamField([\n        (\'richtext\', RichTextBlock()),\n        (\'gallery\', GalleryBlock()),\n    ], use_json_field=True)\n\n\nclass StrictContentPage(Page):\n    body = RichTextField()\n    gallery = StreamField([\n         (\'gallery\', GalleryBlock()),\n …
Run Code Online (Sandbox Code Playgroud)

python wagtail wagtail-streamfield

5
推荐指数
1
解决办法
307
查看次数

列表推导式的增量或索引值?

有没有一种方便的方法可以将自动增量或索引添加到列表理解中?我正在尝试构建一个对象列表,每个对象都需要一个唯一标识符。所以而不是这个:

tags_list = ['art', 'science', 'lollipops']

class Tag:
    def __init__(self, id, name):
        self.id = id
        self.name = name

tags = []    
i = 1
for t in tags_list:
    tag = Tag(i, t)
    tags.append(tag)
    i += 1
Run Code Online (Sandbox Code Playgroud)

……像这样:

tags = [Tag(i, t) for t in tags_list]
Run Code Online (Sandbox Code Playgroud)

^^^ 我如何获得i

我知道,enumerate()但这给了我元组对吗?

python list-comprehension list enumerate

1
推荐指数
1
解决办法
432
查看次数