1

フォームにメーカーのリストがあります (TypedMultipleChoiceField と CheckboxSelectMultiple ウィジェット)。

それらのいくつかは推奨されています(Manufaturers モデルと 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 に答える