gpt4 book ai didi

python - Streamfield 中的 Wagtail SnippetChooserBlock

转载 作者:行者123 更新时间:2023-11-28 21:46:22 28 4
gpt4 key购买 nike

我在从片段中获取值时遇到了一些问题,我已经使用片段选择器 block 将其包含在流场中。

生物片段:

@register_snippet
class BioSnippet(models.Model):
name = models.CharField(max_length=200, null=True)
job_title = models.CharField(max_length=200, null=True, blank=True)
bio = RichTextField(blank=True)
image = models.ForeignKey(
'wagtailimages.Image',
null=True,
blank=True,
on_delete=models.SET_NULL,
related_name='+',
verbose_name='Bio Image'
)
contact_email = models.CharField(max_length=50, null=True, blank=True)
contact_phone = models.CharField(max_length=50, null=True, blank=True)

panels = [
FieldPanel('name'),
FieldPanel('job_title'),
FieldPanel('bio'),
ImageChooserPanel('image'),
FieldPanel('contact_email'),
FieldPanel('contact_phone'),
]

def __str__(self):
return self.name

class Meta:
ordering = ['name',]

生物流场定义:

class BioInline(StructBlock):
bio = SnippetChooserBlock(BioSnippet)

class BioBlock(StructBlock):
overall_title = CharBlock(required=False)
bios = ListBlock(BioInline())

一切正常,但是当我访问模板时,我似乎无法访问代码段的值

{% for b in child.value.bios %}
{{ b }}

<hr>
{{ b.name }}

{% endfor %}

{{ b }} 标签输出:

bio
Sales Team

但是 {{ b.name }} 什么都不输出。 {{ b.values.name }} 或我能猜到的任何其他排列也没有。我怀疑这些值只是没有被拉低。

最佳答案

bios 在这里被定义为 BioInline 值的列表,因此模板中的 b 将是一个 BioInline 值 - 它有一个属性,bio(为您提供实际的 BioSnippet 对象)。因此,要获取名称,您必须使用:{{ b.bio.name }}

我认为 BioInline 对象实际上并没有给你带来任何好处——你可以将 BioBlock 定义为:

class BioBlock(StructBlock):
overall_title = CharBlock(required=False)
bios = ListBlock(SnippetChooserBlock(BioSnippet))

这将使 bios 成为 BioSnippet 的列表 - {{ b.name }} 将按预期工作。

关于python - Streamfield 中的 Wagtail SnippetChooserBlock,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38050609/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com