1

我有一个表格中的制造商列表(TypedMultipleChoiceField 加上 CheckboxSelectMultiple 小部件)。

其中一些是推荐的(有制造商模型和 is_recommended 字段)。我想给他们上特别的课。

所以我得到了:

<ul>
    <li>Just Audi</li>
    <li>Recommended BMW</li>
    <li>Just Skoda</li>
</ul>

我想要的是:

<ul>
    <li>Just Audi</li>
    <li class='recommended'>Recommended BMW</li>
    <li>Just Skoda</li>
</ul>

如何将课程添加到特殊li?

4

2 回答 2

3

您可以遍历模板上的表单字段...

<ul>
{% for field in form %}
    {% for option in field.field.choices.queryset %}
        <li {% if option.is_recommended %}class="recommended"{% endif %}>
        {{ option.title }}
        </li>
    {% endfor %}
{% endfor %}
</ul>
于 2012-09-20T03:58:26.067 回答
0

您应该创建自己的自定义小部件(继承自CheckBoxSelectMultiple),以赋予您的特殊物品它的风格。

在您的特殊小部件中,覆盖该render方法-我尚未对其进行测试,但如下所示:

def render(self, name, value, attrs=None):
    if value is None:
        value = ''
    final_attrs = self.build_attrs(attrs, type=self.input_type, name=name)
    # enter your condition here
    # if Foo.objects.get(name=name).is_recommended:
    # final_attrs['class'] = 'recommended'
    if value != '':
        # Only add the 'value' attribute if a value is non-empty.
        final_attrs['value'] = force_unicode(self._format_value(value))
    return mark_safe(u'<input%s />' % self.flatatt(final_attrs))
于 2012-08-26T08:36:15.697 回答