Irohabook
0
1634

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 はリスト形式です。

次の記事

Django