【问题标题】:Django Crispy Forms: Replace Label and Radio Buttons with ImagesDjango Crispy Forms:用图像替换标签和单选按钮
【发布时间】:2012-12-12 11:23:21
【问题描述】:

我有一个表单,其中某个字段是具有 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 来实现它们?如果没有,我怎样才能做到这一点?

提前致谢。

【问题讨论】:

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


    【解决方案1】:

    我是脆皮形状的首席开发人员。您可以使用 Field 布局对象并使用自定义模板来做到这一点。

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

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

    CustomInlineRadio('field_name')
    

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

    【讨论】:

    • 我通过继承 InlineRadio 解决了这个问题。这使我不仅可以自定义模板,还可以传递其他上下文变量。我打算把它贴在这里,但你在我之前做了。感谢您提供的很棒的包裹!
    猜你喜欢
    • 1970-01-01
    • 2021-09-22
    • 2019-07-31
    • 2016-09-06
    • 2016-01-03
    • 2019-03-10
    • 2012-04-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多