web-dev-qa-db-ja.com

Django管理オブジェクトページにオブジェクトID(主キー)を表示する

私が次のmodel.pyを持っていると仮定します:

class Book(models.Model):
    id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
    name = models.CharField(max_length=100, unique=True)

このモデルをadmin.pyに登録します。

admin.site.register(Book)

Adminで既存のBookを表示すると、nameフィールドのみが表示されます。

私の質問は:IDもこのページに表示できますか?

私が見つけた答えのほとんどは、オブジェクトインスタンスページではなく、管理者リストに関連しています。 IDフィールドを表示する1つの方法は、モデル定義からeditable=Falseを削除して編集可能にすることです。ただし、読み取り専用にしておきたいと思います。

7
Demetris

Modeladminクラスの readonly_fields に追加できます。

class BookAdmin(admin.ModelAdmin):
    readonly_fields = ('id',)

admin.site.register(Book, BookAdmin)
10
Daniel Roseman

[〜#〜]編集[〜#〜]

@DanielRosemanと同じだったので答えを削除しましたが、これは説明のためです。これは ドキュメント からです:

Falseの場合、フィールドはadminまたはその他のModelFormに表示されません。モデルの検証中もスキップされます。デフォルトはTrueです。

したがって、 readonly_fields を使用するのが方法です。

1
scharette