私が次の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
を削除して編集可能にすることです。ただし、読み取り専用にしておきたいと思います。
Modeladminクラスの readonly_fields
に追加できます。
class BookAdmin(admin.ModelAdmin):
readonly_fields = ('id',)
admin.site.register(Book, BookAdmin)
[〜#〜]編集[〜#〜]
@DanielRosemanと同じだったので答えを削除しましたが、これは説明のためです。これは ドキュメント からです:
Falseの場合、フィールドはadminまたはその他のModelFormに表示されません。モデルの検証中もスキップされます。デフォルトはTrueです。
したがって、 readonly_fields を使用するのが方法です。