Python Streamfield中的Wagtail锁
我从代码段中获取值时遇到了一些问题,我使用代码段选择器块将其包含到streamfield中 生物钳:Python Streamfield中的Wagtail锁,python,django,wagtail,wagtail-streamfield,wagtail-snippet,Python,Django,Wagtail,Wagtail Streamfield,Wagtail Snippet,我从代码段中获取值时遇到了一些问题,我使用代码段选择器块将其包含到streamfield中 生物钳: @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 = RichTextFiel
@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.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
s-{{b.name}}
的列表按预期工作。或者,您可以使用self.bios
在blocks.py中,您必须导入代码段模型(应准备好此allready):
然后在模板本身中使用此模型
{% for b in self.bios %}
{{ b }}
<hr>
{{ b.name }}
{% endfor %}
{self.bios%中b的%
{{b}
{{b.name}
{%endfor%}
这篇文章很老了,但随着Wagtail越来越受欢迎,我希望这将有利于其他人
from thebioapp.models import BioSnippet
{% for b in self.bios %}
{{ b }}
<hr>
{{ b.name }}
{% endfor %}