Я сделал, чтобы пользовательский TagField сформировал поле.
class TagField(forms.CharField):
def __init__(self, *args, **kwargs):
super(TagField, self).__init__(*args, **kwargs)
self.widget = forms.TextInput(attrs={'class':'tag_field'})
Как замечено выше, это использует полевой виджет формы TextInput. Но в администраторе я хотел бы, чтобы это было отображено с помощью виджета Текстовой области. Для этого, существует formfield_overrides
сцепитесь, но это не работает на этот случай.
Администраторское объявление:
class ProductAdmin(admin.ModelAdmin):
...
formfield_overrides = {
TagField: {'widget': admin.widgets.AdminTextareaWidget},
}
Это не имеет никакого эффекта на полевой виджет формы и tags
все еще представляются с виджетом TextInput.
Любая справка очень ценится.
--
omat
Попробуйте изменить ваше поле следующим образом:
class TagField(forms.CharField):
def __init__(self, *args, **kwargs):
self.widget = forms.TextInput(attrs={'class':'tag_field'})
super(TagField, self).__init__(*args, **kwargs)
Это позволит использовать виджет, который приходит из **kwargs
. В противном случае ваше поле всегда будет использовать виджет form.TextInput
.