Изменить поле в Django Flatpages Admin
Используя Flatpages с администратором по умолчанию, мне нужно изменить поле шаблона с текстового ввода, чтобы выбрать или радио с предопределенными вариантами. Это легко сделать с помощью одного из моих собственных приложений - просто используйте атрибут choices в модели.
Я попробовал несколько вещей - я добавлю детали об этих попытках позже, если это необходимо - но кто-нибудь знает хороший способ сделать это?
1 ответ
Решение
Определите пользовательский класс ModelAdmin для плоских страниц, который наследуется от класса по умолчанию, но использует пользовательскую форму. В этой форме переопределите поле, используя нужный виджет. Затем отмените регистрацию администратора плоских страниц и зарегистрируйте его в своем пользовательском классе.
from django.contrib.flatpages.admin import FlatPageAdmin, FlatpageForm
class MyFlatpageForm(FlatpageForm):
template = forms.ChoiceField(choices=MY_CHOICES)
class MyFlatPageAdmin(FlatPageAdmin):
form = MyFlatpageForm
admin.site.unregister(FlatPage)
admin.site.register(FlatPage, MyFlatPageAdmin)