Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Streamfield中的Wagtail锁_Python_Django_Wagtail_Wagtail Streamfield_Wagtail Snippet - Fatal编程技术网

Python Streamfield中的Wagtail锁

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

我从代码段中获取值时遇到了一些问题,我使用代码段选择器块将其包含到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 = 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 %}