问题标签 [wagtail-streamfield]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
wagtail - 如何在 `StreamField` 中自定义子类 `StructBlock` 的编辑界面
我有一个 wagtail 项目,它利用该sites
框架并有一个页面作为每个site
. 这些主页(不一定)需要子页面;它们的内容是从各种 streamfield 构建StructBlock
的。
这些StructBlock
s 中的每一个都有一组不同的字段,但也有一些共同的字段(例如show_in_navigation
)。
为了不重复show_in_navigation
BooleanBlock
for each StructBlock
,我使用公共字段创建了一个BaseStructBlock
,并为我的特定块对其进行了子类化:
那行得通-我show_in_navigation
在所有继承自的块中都得到了我的BaseStructBlock
-但我想为这些字段自定义编辑界面:
目前,所有字段都下方- 已解决,请参阅更新BaseStructBlock
出现在子类块的字段上方 - 我想让它们显示在特定字段BaseStructBlock
- 我很高兴使用所有这些很酷的面板自定义,它们可以通过
edit_handlers
并制作我所有的常用字段collapsible
,例如。
这可能吗?非常感谢所有提示。
PS:我确实注意到 StructBlock 的文档部分自定义编辑界面,但我看不出这如何解决我的需求......
PPS:这个项目:
- 姜戈 (2.0.1)
- 鹡鸰 (2.0b1)
django - StreamField – TypeError: 'bool' 对象不可迭代
构建:Wagtail CMS(1.13.1) 和 python3.6 中的 Django(1.11)。
我正在尝试创建一个非常基本的 Streamfield 块(CardBlock),但不断收到类型错误。它与文档中的示例非常相似,但我无法让它工作......
django 正在尝试“get_db_prep_value()”。因此,Wagtail 尝试为 value 中的所有子项(streamchild 实例)“get_prep_value()” ,如下所示。wagtail/wagtailcore/blocks/stream_block.py(第 257 行):
我不确定这个值是多少。需要更改我的块类中的哪些内容以更正此值变量?
Edit1-完全错误:
django - 在 Wagtail 的 Page.get_children 的 StreamField 中访问 StructBlock
我尝试在页面中呈现子页面的 StreamField。我无法在 StreamField 中呈现不同的 StructField。这是我的代码
我的模板。(DefinitionPage 是此页面的子页面。)
post.title 没问题,但就像 post.body 中没有块一样。我尝试了很多东西,{% include_block block %} 肯定是错误的。我还尝试为 StructBlock 添加自定义模板,但没有成功。
我能怎么做 ?我正在使用 Django 2.0 和 wagtail 2.0(我是 wagtail 的新手,但我阅读了文档)最好的问候
django-templates - 将 wagtail 流场块依赖项插入模板的正确方法是什么?
我依靠模板继承系统来插入extra_css
和/或extra_js
进入我的页面:
base.html:
page.html:
这很好用,因此确实在它所属的地方插入了额外的 css/js。
如果我需要在streamfield
其中一个块模板需要自定义 css/js 的地方使用,就会出现问题。在这种情况下,自定义资源与块一起插入,但不在base.html中的指定位置。
例如,如果上面示例中extra_js
的page.html已添加到块模板中,那么select2
会抱怨jquery
不存在,这是完全正确的,因为它是与块一起插入的,但不是在Core JS之后的预期图书馆。
加载jquery
两次会导致其他问题:https ://stackoverflow.com/a/25782679/2146346
其他选项是将所有块依赖项加载到页面中,但它会用冗余资源填充页面,因为并非页面中的每个块都streamfield
可能在页面上使用。
还有其他选择吗?
wagtail - 在 TableBlock 单元格中添加链接
我在 StreamField 中使用 TableBlock。渲染页面,包括表格,都很好。但是无论如何允许用户在表格单元格中输入链接?只需添加一个 URL,它就会呈现为文本(正如我所期望的那样)。
这需要自定义渲染器吗?
django - ChoiceBlock 由其他 Wagtail 块组成?
我正在尝试构建轮播model
:
每张幻灯片都包含一个图像或视频和说明。
我StreamBlock
在这里使用,因为我找不到任何其他更合适的结构块类型,允许用户在图像和视频之间进行选择。理想情况下,我需要类似于 的东西ChoiceBlock
,除了choices
参数应该期望其他块类型。
这可行吗?或者至少有办法限制sub-blocks
可以从 中插入多少个StreamBlock
?
django - 如何从 wagtail 块模板中的 struct_block.StructValue 获取数据库 ID?
为 wagtail 块构建自定义模板StreamField
我发现自己处于需要以某种方式将当前块的 ID 传递给其他视图的情况。
例如,当在特定块中单击 URL 时,登录页面view
必须准确知道该 URL 是在哪个块中被单击的。然后view
可以提取与特定块相关联但不一定在视觉上呈现给用户的其他信息。
我目前的策略是使用snippets
,所以我可以传递 的 IDsnippet
并且view
可以获得相关但事先隐藏的数据。
这工作还不错,但人们必须在两个地方编辑内容,我必须看看他们悲伤的脸。
似乎value
块模板上下文中的变量是 的一个实例wagtail.core.blocks.struct_block.StructValue
,它使我可以访问块的所有字段,但它似乎没有显示它在数据库中的足迹。
此外value
还有一个有趣的属性:value.block
,它似乎是用于构造块的实际模型的一个实例,但我再次找不到任何有用的东西,例如id
或pk
允许在数据库中识别该实例。
有办法吗?
wagtail - 缺少 Wagtail Streamforms 迁移破坏 Heroku 部署
由于“模型具有尚未反映在迁移中的更改”消息,我无法部署到 Heroku。我的应用程序迁移是最新的。问题是,由于某种原因,未部署以下目录中 wagtailstreams 包的迁移:
我尝试添加MIGRATION_MODULES = {'wagtailstreamforms': 'myapp.wagtailstreamforms_migrations'}
到我的 base.py,makemigrations wagtailstreamforms
再次运行和部署,但 Heroku 仍然没有运行任何迁移,并且仍然报告说相同模型的更改未反映在迁移中。
在不属于我的 git 目录的 wagtailstreamforms 等库中更新迁移的策略是什么?
wagtail - 如何在应用程序之间移动 StreamBlock
我正在重构一些代码,我希望将自定义 StreamBlock(或 StructBlock)从一个 django 应用程序移动到另一个。
这似乎比在应用程序之间迁移表要简单得多。
- 将块声明移动到新应用程序
- 更新任何依赖项以指向新模块
- 更新旧迁移文件(导入等)以指向新应用
- ... 利润
这真的是我们需要做的吗?这里是否存在任何部署风险 - 或者这真的是纯粹的 python更改。