我有一个 Wagtail 项目,有两个不同的Page模型,它们使用相同的画廊块,但方式不同。在一个模型中,我想在其他自由形式块的列表中使用图库;但在另一种模型中,只有一个画廊出现在页面上的特定位置。画廊非常复杂,有很多选项,例如autoadvance我不想在模型之间重复,并且很难将其移动到 mixin 中。gallery我可以通过向严格模型添加额外的 StreamField 来完成我想要的,如下所示:(content_panel等省略)
# 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) 有没有一种方便的方法可以将自动增量或索引添加到列表理解中?我正在尝试构建一个对象列表,每个对象都需要一个唯一标识符。所以而不是这个:
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()但这给了我元组对吗?