我正在尝试在我的Wagtail网站上构建一些结构化代码片段.我查看了文档,但在这一点上什么都看不到(如果我错过了,请原谅我).
是否可以StreamField在代码段内使用?或者,仅限于Pages
为 wagtailStreamField块构建自定义模板我发现自己需要以某种方式将当前块的 ID 传递给其他视图。
例如,当 URL 在特定块中被点击时,着陆页view必须确切知道 URL 是在哪个块中被点击的。然后view可以提取与特定块相关联但不一定在视觉上呈现给用户的其他信息。
我目前的策略是使用snippets,因此我可以传递 的 IDsnippet并且view可以获取相关但预先隐藏的数据。
这效果还不错,但人们必须在两个地方编辑内容,我不得不看着他们悲伤的脸。
似乎value块模板上下文中的变量是 的一个实例wagtail.core.blocks.struct_block.StructValue,它使我可以访问块的所有字段,但它似乎没有显示它在数据库中的足迹。
进一步value有一个有趣的属性:value.block,它似乎是用于构造块的实际模型的实例,但我再次找不到任何有用的东西,例如id或pk允许在数据库中识别该实例。
有办法吗?
django python-3.x wagtail wagtail-streamfield wagtail-snippet
我在从代码段获取值时遇到了一些麻烦,我已使用代码段选择器块将其包含到流字段中。
BioSnippet:
@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',]
Run Code Online (Sandbox Code Playgroud)
生物流场定义:
class BioInline(StructBlock):
bio = SnippetChooserBlock(BioSnippet)
class BioBlock(StructBlock):
overall_title = CharBlock(required=False)
bios = ListBlock(BioInline())
Run Code Online (Sandbox Code Playgroud)
所有这些都可以,但是当我进入模板时,似乎无法访问代码段的值
{% for b in child.value.bios %}
{{ b …Run Code Online (Sandbox Code Playgroud) 我正在构建基于Wagtail Snippets的自定义AdminModel,并在我的模型的AdminPanel中有一个自定义菜单.如何在不禁用的情况下隐藏/删除AdminPanel中的代码段选择?谢谢.
@register_snippet
class Numbers(models.Model):
number = models.IntegerField()
class State(models.Model):
state = models.CharField(max_length=100)
number = ParentalManyToManyField(Numbers)
class HomeStateNumber(State):
page = ParentalKey('home.HomePage', related_name='helpline')
api_fields = ['state', 'number']
panels = [
FieldPanel('state'),
FieldPanel('number',widget=forms.CheckboxSelectMultiple),
]
class HomePage(Page):
content_panels = [
FieldPanel('title'),
ImageChooserPanel('cover_page'),
InlinePanel('ticker', label="ticker"),
InlinePanel('helpline', label="helpline"),
]
Run Code Online (Sandbox Code Playgroud)
我想在状态中添加一个以上的数字,wagtail在管理员中显示正确的顺序,当您从多个选择数字并保存页面时,数据不会保存.它仍然是None(queryset)有没有其他方法可以做到这一点?我想我在某处做错了请帮助