Django Admin画面でPostモデルの項目並びを変更したく、admin.pyにクラスを作成してモデル登録しようとしたがエラーになって困っていた。 原因はPostモデルはすでにMarkdownxで登録しており登録が二重になるためだった。
Markdownxは利用したいので他の方法がないか調べてみたところ「プロキシモデル」というモデルを継承してオーバーライドできる方法があった。
他にカスタムテンプレートの作成などの方法もあったがプロキシモデルで簡単にできたのでよかった。
参考サイト
参考コード
model.py
- # Admin画面の項目並びで利用
- class PostProxy(Post):
- class Meta:
- proxy = True
admin.py
- """
- class PostAdmin(admin.ModelAdmin):
- list_display = ("title", "title_en", "category", "published_date")
- """
- admin.site.register(Category)
- admin.site.register(Tag)
- """ admin.site.register(Post, PostAdmin) """
- admin.site.register(Post, MarkdownxModelAdmin)
- admin.site.register(Comment)
- @admin.register(PostProxy)
- class PostProxyAdmin(admin.ModelAdmin):
- list_display = ("title", "title_en", "category", "published_date")
参考画面