admin ページで特定の項目だけreadonly にする
django のadminページはデフォルトで全て変更可能です。
たとえば、次のようなadmin.py があったとして、author, title, text は全部変更可能になります。
class SampleAdmin(admin.ModelAdmin): fieldsets = [ ('Author', {'fields': ['author']}), ('Title', {'fields': ['title']}), ('Text', {'fields': ['text']}), ] list_display = ('author', 'title', 'text', 'updated_at') admin.site.register(Sample, SampleAdmin)
ここで、author, titleは変更しないよねってことでreadonly にしたい場合は、次の一行を追加します。
class SampleAdmin(admin.ModelAdmin): fieldsets = [ ('Author', {'fields': ['author']}), ('Title', {'fields': ['title']}), ('Text', {'fields': ['text']}), ] list_display = ('author', 'title', 'text', 'updated_at') readonly_fields = ('author', ' title') # この行を追加 admin.site.register(Sample, SampleAdmin)
おしまい。
ホントはModelForm でreadonly にしたいんだけど、そっちはやり方わからず。。
調べよう。