在Django Admin中编辑/显示主键

emc*_*cee 32 django django-models django-admin

看起来Django隐藏了在Django管理界面中显示/编辑标记主键的字段.

假设我想输入我可能想要或不想指定主键的数据.我如何在管理界面中显示主键,如何指定它是可选的?

the*_*mel 36

我还想在Django管理员中简单地显示'id'(主键),但不一定要编辑它.我刚把它添加到readonly_fields列表中,它显示正常.IE:

class StudentEnrollmentInline(admin.TabularInline):
    model = Enrollment
    readonly_fields=('id',)
Run Code Online (Sandbox Code Playgroud)

而如果我试图将它添加到'fields'列表中,Django对我很生气,说该字段不存在...


Hae*_*aes 12

如果在模型中明确指定主键字段(with primary_key=True),则应该能够在管理员中对其进行编辑.

对于Django,通过./manage.py syncdb以下主键字段创建的模型会自动添加:

id = models.AutoField(primary_key=True)
Run Code Online (Sandbox Code Playgroud)

如果您将模型明确地更改(或添加)为IntegerField主键,您将能够使用admin直接编辑它:

id = models.IntegerField(primary_key=True)
Run Code Online (Sandbox Code Playgroud)

但正如其他人指出的那样,这是一个潜在的雷区......


Dan*_*man 1

拥有可选的主键是没有意义的。PK 要么是自动增量,在这种情况下无需编辑它,要么是手动指定的,在这种情况下始终需要它。

为什么需要这个?

  • 我在上面评论了我的推理,现在看来这是一个坏主意。实际上,我如何在 django 的管理中编辑主键。假设我是受虐狂。 (2认同)