Django Admin画面

2020年01月24日   プログラミング  Django

Django Admin画面でPostモデルの項目並びを変更したく、admin.pyにクラスを作成してモデル登録しようとしたがエラーになって困っていた。 原因はPostモデルはすでにMarkdownxで登録しており登録が二重になるためだった。

Markdownxは利用したいので他の方法がないか調べてみたところ「プロキシモデル」というモデルを継承してオーバーライドできる方法があった。

他にカスタムテンプレートの作成などの方法もあったがプロキシモデルで簡単にできたのでよかった。

参考サイト


参考コード


model.py

  1. # Admin画面の項目並びで利用
  2. class PostProxy(Post):
  3.  
  4. class Meta:
  5. proxy = True
  6.  

admin.py

  1. """
  2. class PostAdmin(admin.ModelAdmin):
  3. list_display = ("title", "title_en", "category", "published_date")
  4. """
  5.  
  6. admin.site.register(Category)
  7. admin.site.register(Tag)
  8. """ admin.site.register(Post, PostAdmin) """
  9. admin.site.register(Post, MarkdownxModelAdmin)
  10. admin.site.register(Comment)
  11.  
  12. @admin.register(PostProxy)
  13. class PostProxyAdmin(admin.ModelAdmin):
  14. list_display = ("title", "title_en", "category", "published_date")
  15.  

参考画面


Sponsor Link