Django Admin - Переопределение виджета пользовательского поля формы

Я сделал, чтобы пользовательский 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

28
задан omat 12 August 2010 в 16:43
поделиться

1 ответ

Попробуйте изменить ваше поле следующим образом:

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.

2
ответ дан 28 November 2019 в 02:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: