Django Crispy Forms:用图像替换标签和单选按钮

时间:2012-12-27 01:42:33

标签: forms django-forms radio-button django-crispy-forms

我有一个表单,其中某个字段是具有3个选项的无线电选择器。让我们说这代表好,多或少,坏。

我设法将它们与InlineRadio放在同一行,如下所示:

self.helper.layout = Layout(InlineRadio(field_name))

现在,我需要做两件事:

1)替换每个选项,该选项呈现为单选按钮及其带有预定义图像的标签。

2)添加2个图像,一个在单选按钮的左侧,另一个在右侧。所以,最后,我将连续拍摄5张图片。从左到右:Image of Smile (just the image) - Image of selector (Good) - Image of selector (More-or-Less) - Image of selector (Bad) - Image of Sad face (just the image

是否有可能用django-crispy实现它们?如果没有,我怎么能实现这个目标?

提前致谢。

1 个答案:

答案 0 :(得分:5)

我是脆皮形式的主要开发者。您可以使用Field布局对象并使用自定义模板执行此操作。

Field('field_name', template="custom_inline_radio.html")

您拥有的其他选项是创建自己的布局对象子类InlineRadio。那样你只需要这样做:

CustomInlineRadio('field_name')

实际上,你尝试做的事情基本上是覆盖Django中默认小部件的输出,如果你在Django表单中使用自定义小部件可能更有意义,crispy-forms将会很好用。我在widgets and Django forms上写了一篇你可能感兴趣的文章。