- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我想实现这样的目标,
from wagtail.wagtailcore.blocks import StreamBlock, StructBlock
class CarouselBlock(StructBlock):
content = StreamBlock([
('tab', TabBlock()),
('carousel', CarouselBlock())
])
class TabBlock(StructBlock):
content = StreamBlock([
('tab', TabBlock()),
('carousel', CarouselBlock())
])
在 Carousel 中,我可以添加一个选项卡或另一个 carousel,在一个 Tab 内我可以添加一个 carousel 或另一个 Tab。
处理此类编程案例的最佳实践是什么。
最佳答案
不幸的是,即使您找到了在定义中设置循环引用的方法,我也不认为这项工作可行。 Wagtail 的代码中有很多地方会尝试将定义作为树来遍历,并以无限递归结束。
例如,当卡住迁移中的 StreamField 定义时会发生这种情况 - 它会将对命名 StructBlock/StreamBlock 子类的任何引用扩展到普通 StructBlock/StreamBlock 构造函数(参见 http://docs.wagtail.io/en/v1.5.2/topics/streamfield.html#streamfield-definitions-within-migrations ),在这种情况下会无限扩展。同样,为编辑表单构建 HTML 将失败,因为它会尝试为表单中的每个可重复元素构建 HTML 模板(即每当您单击以添加新轮播或新选项卡时要添加的 HTML block ) ) - 将同一个模板重复用于顶级轮播、二级轮播、三级轮播等,这不够聪明,因此将生成无限多的模板。
您需要对嵌套层数设置硬编码限制(例如,CarouselBlock 可以包含一个 SecondLevelCarousel block ,该 block 可以包含一个 ThirdLevelCarousel block ,但仅此而已),或者想出一个替代方案将数据条目分散到多个 View 而不是单个无限嵌套表单的数据表示。例如,您可以将 Carousel 和 Tab 定义为片段模型,并使用 SnippetChooserBlock 定义它们之间的父/子链接:
@register_snippet
class Carousel(models.Model):
content = StreamField([
('carousel', blocks.SnippetChooserBlock('myapp.Carousel')),
('tab', blocks.SnippetChooserBlock('myapp.Tab')),
])
(当然,如果你走这条路,你必须确保不建立任何循环父/子关系,否则你又回到原点:-))
关于python - 使用 StreamBlock 时如何解决 Wagtail 循环 block 依赖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37833593/
我有一个 wagtail 非页面模型,我想使用 InlinePanel以便我可以在父表单中内联编辑多个项目。 class Parent(ClusterableModel): panels = [
我有一个使用多站点模式的 wagtail 安装,每个站点有一组用户,每个组都是自己的集合。 当用户登录管理界面时,他们会在摘要部分看到所有集合中的图像计数。 但是当他们点击图像菜单时,他们只能看到他们
我正在关注 the documentation还有this example在我的 Wagtail 站点中创建自定义 OEmbed Finder。 (最终我想修改 YouTube 视频的 HTML 输出
Wagtail 是美妙的 CMS。我确实有一个问题如何在管理员中添加子菜单。我有一个自定义模型位置在那个模型中我有 2 个外键。要管理通过 modeladmin 创建的位置模型,请使用菜单。但是,要管
我很难实现“嵌套类别”之类的东西: PageA: - Cat1 - SubCat1 - SubCat2 - ... - Cat2 - SubCat1 - .
对于博客应用程序或 CMS,这似乎是一个非常简单的要求: 如何自动使登录用户成为 wagtail 页面的作者?例如,如果我以“Bob”身份登录并输入帖子,则作者应自动为“Bob” ". 通常我会简单地
我想从仪表板禁用 wagtail 更新警报。我担心它会惊动我的客户。我很感激你的提醒,但没有办法忽略它。我猜此时唯一的行动方案是进入 wagtail 管理模板并简单地注释掉适用的代码? 最佳答案 有
我在预览 Wagtail 页面时遇到错误,但在发布和实时查看时一切正常。我的设置是这样的: from django.db import models from modelcluster.fields
对于博客应用程序或 CMS,这似乎是一个非常简单的要求: 如何自动使登录用户成为 wagtail 页面的作者?例如,如果我以“Bob”身份登录并输入帖子,则作者应自动为“Bob” ". 通常我会简单地
我想从仪表板禁用 wagtail 更新警报。我担心它会惊动我的客户。我很感激你的提醒,但没有办法忽略它。我猜此时唯一的行动方案是进入 wagtail 管理模板并简单地注释掉适用的代码? 最佳答案 有
我在预览 Wagtail 页面时遇到错误,但在发布和实时查看时一切正常。我的设置是这样的: from django.db import models from modelcluster.fields
url(r'^$', views.HomePage.as_view(), name='homepage'), class HomePage(RedirectView): def get(sel
我正在使用鹡鸰作为 headless CMS。我想让此 CMS 的用户能够轻松查看 SPA 上的页面预览。我已覆盖 API 以在 token 的帮助下公开草稿页面。 我唯一坚持的部分是修改 Previ
有没有办法在 Wagtail 中为 FieldPanel 设置自定义标签?我想做类似的事情: class BlogPage(Page): intro = models.CharField(ma
我试图让两个不同的 Wagtail 站点拥有自己的 404 页面,但似乎没有办法在 wagtail“设置”=>“的“站点”配置中指定哪个页面用作 404 页面站点”部分,当我将它们放入所涉及的应用程序
我正在创建一个 wagtail 站点,用户可以在其中注册、登录到 wagtail 管理员并编写要发布的文章页面。是否有一个钩子(Hook)或可能的方法来拦截和过滤 wagtail 管理中的数据,以便用
我在 Wagtail 2.0 富文本字段中有一堆内容,看起来像 Page heading (intro blurb) heading 1 (heading-1-relevant text) headi
我有一个 Wagtail Page 类的子类,它具有 django ManyToManyField 类型的字段。当我尝试创建页面对象的新实例时,我会获得 ManyToManyField 指向的对象列表
我有一个 Wagtail Page 类的子类,它具有 django ManyToManyField 类型的字段。当我尝试创建页面对象的新实例时,我会获得 ManyToManyField 指向的对象列表
假设我有这样一个模型: class Sandwich(models.Model): """ Food-like things stacked horizontally. """
我是一名优秀的程序员,十分优秀!