1

タイトルのとおり、django-taggit を使用しているモデルのタグ フィールドにカスタム サイズを使用するように管理インターフェイス (admin.py) に指示するにはどうすればよいですか。

tags = TaggableManager()

ありがとう

4

1 に答える 1

0

Django Admin - Overriding the widget of a custom form fieldと同様の質問。

ただし、タグが正しく表示されるように、AdminTextareaWidget などの admin.widgets をオーバーライドする必要があります。それ以外の場合、フォーム フィールドの値は次のように表示されます。

[<TaggedItem: Product object tagged with bar>, 
<TaggedItem: Product object tagged with foo>, 
<TaggedItem: Product object tagged with baz>]

これを説明するサンプル コード。

#forms.py

from django import forms
from django.contrib.admin.widgets import AdminTextareaWidget
from django.utils import six

from models import Product

from taggit.utils import edit_string_for_tags


class TaggitAdminTextareaWidget(AdminTextareaWidget):
    # taken from taggit.forms.TagWidget
    def render(self, name, value, attrs=None):
        if value is not None and not isinstance(value, six.string_types):
            value = edit_string_for_tags([o.tag for o in value.select_related("tag")])
        return super(TaggitAdminTextareaWidget, self).render(name, value, attrs)


class ProductAdminForm(forms.ModelForm):
    class Meta:
        model = Product
        widgets = {
            'tags': TaggitAdminTextareaWidget
        }
于 2014-08-18T16:58:39.700 に答える