Изменить поле в 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)
Другие вопросы по тегам