Djangoのモデルを管理者画面で確認する(データベースの中身を管理者権限で見る)
Django の管理者でモデルを確認するには admin.site の register という関数を利用します。
例えばメンバーというモデルを作り、それを管理者で確認してみましょう。まずはモデルを作ります。
class Member(models.Model):
group = models.ForeignKey(Group, on_delete=models.CASCADE)
account = models.ForeignKey(Account, on_delete=models.CASCADE)
role = models.CharField(max_length=16, default='user')
date_created = models.DateTimeField(auto_now_add=True)
class Meta:
unique_together = ('group', 'account')
migrate でテーブルを作っても、このままでは管理者がメンバーのデータを見ることはできません。テーブルが実際に作られているか、どんなデータが入っているか確認するには、次のクラスを作り admin に登録します。
class MemberAdmin(admin.ModelAdmin):
list_display = ['group', 'account', 'role', 'date_created']
admin.site.register(Member, MemberAdmin)
結局次のようになります。
class Member(models.Model):
group = models.ForeignKey(Group, on_delete=models.CASCADE)
account = models.ForeignKey(Account, on_delete=models.CASCADE)
role = models.CharField(max_length=16, default='user')
date_created = models.DateTimeField(auto_now_add=True)
class Meta:
unique_together = ('group', 'account')
class MemberAdmin(admin.ModelAdmin):
list_display = ['group', 'account', 'role', 'date_created']
admin.site.register(Member, MemberAdmin)
これで管理者からメンバーというテーブルを確認できます。○○ というモデルを作ったら、その都度 ○○Admin というクラスを作り、register で登録すると便利です。
list_display
list_display にはそのテーブルのカラム名を入れます。カラムにない名前を入れるとエラーになります。list_display はリスト形式です。