4

管理画面のようなものが欲しいです。

フォームのコードは次のとおりです。

class NewRoleFrom(forms.Form):
    role = forms.ModelMultipleChoiceField(
        queryset=Role.objects.all(),
        widget=forms.CheckboxSelectMultiple
    )

だから、それは簡単です、私は Role ラベル (Role:) を持っており、データベース内の各ロールはチェックボックスでレンダリングされます。このように、ユーザーが選択したすべてのロール オブジェクトを取得できます。しかし、各行の先頭に箇条書きがあります。どうすればそれを削除できますか? list_display次に、で定義するときのように、お互いに属性を追加することは可能admin.pyですか?

4

3 に答える 3

0

django.forms.widgets モジュールからのそのウィジェットのソースは次のとおりです。

class CheckboxSelectMultiple(SelectMultiple):
    def render(self, name, value, attrs=None, choices=()):
        if value is None: value = []
        has_id = attrs and 'id' in attrs
        final_attrs = self.build_attrs(attrs, name=name)
        output = [u'<ul>']
        # Normalize to strings
        str_values = set([force_unicode(v) for v in value])
        for i, (option_value, option_label) in enumerate(chain(self.choices, choices)):
            # If an ID attribute was given, add a numeric index as a suffix,
            # so that the checkboxes don't all have the same ID attribute.
            if has_id:
                final_attrs = dict(final_attrs, id='%s_%s' % (attrs['id'], i))
                label_for = u' for="%s"' % final_attrs['id']
            else:
                label_for = ''

            cb = CheckboxInput(final_attrs, check_test=lambda value: value in str_values)
            option_value = force_unicode(option_value)
            rendered_cb = cb.render(name, option_value)
            option_label = conditional_escape(force_unicode(option_label))
            output.append(u'<li><label%s>%s %s</label></li>' % (label_for, rendered_cb, option_label))
        output.append(u'</ul>')
        return mark_safe(u'\n'.join(output))

    def id_for_label(self, id_):
        # See the comment for RadioSelect.id_for_label()
        if id_:
            id_ += '_0'
        return id_

箇条書きは、リストの django CSS によるものであることがわかります。したがって、それらを削除するには、「ul」html タグにクラスを追加して CheckboxSelectMultiple から継承する新しい wudget を作成することを検討してから、ここで説明されているソリューションを使用して独自の css を追加します。

于 2013-04-11T10:25:46.460 に答える