【问题标题】:Change field in Django Flatpages Admin在 Django Flatpages Admin 中更改字段
【发布时间】:2009-12-02 14:37:44
【问题描述】:

使用带有默认管理员的 Flatpages,我需要将模板字段从文本输入更改为选择或带有预定义选项的单选。使用我自己的一个应用程序很容易做到这一点 - 只需使用模型中的选择属性。

我已经尝试了一些方法 - 如有必要,我稍后会添加有关这些尝试的详细信息 - 但有人知道这样做的好方法吗?

【问题讨论】:

    标签: django django-admin django-flatpages


    【解决方案1】:

    定义一个自定义平面页面 ModelAdmin 类,该类继承自默认类,但使用自定义表单。在此表单上,使用所需的小部件覆盖该字段。然后取消注册 flatpages 管理员并使用您的自定义类重新注册。

    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)
    

    【讨论】:

    • 谢谢!这行得通,尽管我不得不将模板更改为 template_name。
    • 我无法发表评论,所以我写信回答 Daniel Roseman 把它放在哪里?我应该为此制作新应用吗?
    • 别忘了from django.contrib.flatpages.models import FlatPage
    • 这已在其他地方提出,但我一直在问自己在哪里添加此代码。您可以在没有应用程序的情况下使用平面页面,那么如果您只是想更改管理表单中所有平面页面的行为,您应该在哪里进行此覆盖?
    猜你喜欢
    • 2013-09-02
    • 1970-01-01
    • 2022-11-12
    • 1970-01-01
    • 1970-01-01
    • 2010-11-15
    • 2012-02-25
    • 2021-03-06
    • 1970-01-01
    相关资源
    最近更新 更多