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