在Wagtail中,我制作了一个包含ImageChooserBlock
的块,如下所示:
class MyBlock(blocks.StructBlock):
background = ImageChooserBlock()
现在我想向ImageChooserBlock
添加一些额外的字段,所以我将它移动到它自己的块中,现在看起来像这样:
我的第一个问题是extra
字段没有包括在内。(可能是因为块继承了ImageChooserBlock
?在
我的第二个也是最重要的问题是,我希望能够在表单中隐藏额外的字段,但要包含在模板呈现中。有人知道这是怎么做到的吗?我不想为此注入js或css。必须有一种方法可以使用Blocks
、Widgets
和{
我知道我可以在我的FancyImageChooserBlock
的clean
方法中进行一些计算来手动设置extra
的值。这正是我想做的。在
任何帮助都是感激的,我真的被困在这里了。在
ImageBlockChooser不像'StructBlock'或'ListBlock'或'StreamBlock',它们都是structural block types-这是为了“查找”您可能定义的任何子字段而设计的。只有结构块类型是为“开箱即用”准备的。对于要使用字段的块,需要将其配置为使用/生成包含这些字段的模板。在
就个人而言,我认为有更好的方法来实现您想要的,而不是子类化ImageChooser,因为它通常会更健壮地尝试并找到使用Wagtail提供的特性的方法,即使您必须对它们有一点创造性。在
但是,如果您仍然想知道如何通过子类化ImageChooser来实现(黑客攻击):
解决方案1-子类化ImageChooser(这不是我的首选选项):
解决方案2-使用自定义结构块和组元值:
当然,任何这一切都可以通过JS/css轻松实现,但前提是我们需要一个纯html的解决方案。在
^{2美元模型中的甜蜜溶液
这个答案实际上并不是问题的答案,而是在试图在后台向
ImageChooser
添加一些字段时使用的更好的选择。从Wagtail文档中了解到,有一种东西叫做Custom Image Model因此,我没有尝试在
Block
“层”上添加字段,而是将它们添加到Model
上。对我来说,代码是这样的:另外,
WAGTAILIMAGES_IMAGE_MODEL
必须指向您自己的模型,更多关于这个的信息您可以在文档中找到。在一个非常老套的解决方案
还有另一种方法可以做到这一点,不使用额外的html或额外的模型,但这是非常老套的,不赞成。在
^{pr2}$这样,在添加额外值时就不需要额外的}函数来注入额外的变量,这是非常、非常粗糙和肮脏的。但它是有效的,所以如果你不介意设计标准或性能,独自工作,别人永远也看不到你的代码,你可以用这个。在
html, css or js
。这一点是因为它占用了大量的用户体验性能,并且还重写了to_python
函数和{所以不要。。在
关于你的第一个问题,为什么不只是:
是吗?在
相关问题 更多 >
编程相关推荐