Django - 将类添加到ModelChoiceField中的各个行?

时间:2011-09-08 20:34:58

标签: django forms

我在我的一个表单中使用了模型选择字段,我想根据模型属性的值为每个选项添加一个CSS类。

有一种简单的方法吗?

任何建议表示赞赏。

感谢。

1 个答案:

答案 0 :(得分:2)

两个选项:

  1. 您必须自己在模板中渲染选择,迭代{{form.field_name.choices}}并生成类。

  2. 创建一个自定义Widget,扩展django.forms.widgets.Select并覆盖它的render_option()方法。例如,它是如何实现的,请参阅render_option() in django's source。使用表单中的小部件(作为字段的小部件)。

    你可以在django片段中看到另一个类似的例子(在这种情况下是禁用的选项):Allow disabling options in a select widget

  3. IMO第二个选项更清晰:它可重复使用,无需弄乱模板。