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

dud*_*ein 3 forms django-forms radio-button django-crispy-forms

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

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

self.helper.layout = Layout(InlineRadio(field_name))
Run Code Online (Sandbox Code Playgroud)

现在,我需要做两件事:

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实现它们?如果没有,我怎么能实现这个目标?

提前致谢.

mar*_*jop 6

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

Field('field_name', template="custom_inline_radio.html")
Run Code Online (Sandbox Code Playgroud)

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

CustomInlineRadio('field_name')
Run Code Online (Sandbox Code Playgroud)

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