在 Django 管理表单中显示创建和编辑的字段
Show created and edited fields in Django admin form
我有这个型号
class Volunteer(models.Model):
STATUSES = (
('Active', 'Active'),
('Paused', 'Paused'),
('Inactive', 'Inactive'),
)
first_name = models.CharField(max_length=50)
last_name = models.CharField(max_length=50)
email_address = models.CharField(max_length=100, null=True, blank=True)
picture = models.ImageField(null=True, blank=True)
status = models.CharField(max_length=20, choices=STATUSES, default="Active")
created = models.DateTimeField(auto_now_add=True, editable=False)
edited = models.DateTimeField(auto_now=True, editable=False)
然后我就这样注册了
class VolunteerAdmin(admin.ModelAdmin):
fields = ('first_name', 'last_name', 'email_address', 'status', 'created', 'edited')
list_display = ('first_name', 'last_name', 'email_address', 'status')
list_editable = ('status',)
list_filter = ('status',)
search_fields = ('first_name', 'last_name')
admin.site.register(Volunteer, VolunteerAdmin)
我收到一个错误,因为我手动添加了创建和编辑的字段,因为我想在 view/edit 表单中看到它们。我知道用户不应该能够更改这些,所以我将两者的属性设置为 editable=False。但是,它会引发错误。知道我需要做什么才能在我的管理表单中显示这两个字段吗?
这是我的错误:
'created' 无法为志愿者模型表单指定,因为它是一个不可编辑的字段。检查 class VolunteerAdmin 的 fields/fieldsets/exclude 属性。
感谢您的帮助。
我想你可以去掉字段行,如果你愿意,可以在显示列表中添加 'created'、'edited',通常你可以在每个志愿者的详细信息中自动看到该字段,
可能是因为您手动执行它而卡住了,在这种情况下,请删除您上次的迁移和数据库 (sqlite),然后重新执行 makemagrations 和迁移。
此外,如果您在 forms.py 中使用要在模板中使用的表单,则应排除 'created' 和 'edited',因为您无法编辑它们。
您应该考虑在只读字段中添加 created 和 edited,例如:
readonly_fields = ('created','edited')
完整的代码片段:
class VolunteerAdmin(admin.ModelAdmin):
fields = ('first_name', 'last_name', 'email_address', 'status','created','edited')
list_display = ('first_name', 'last_name', 'email_address', 'status')
list_editable = ('status',)
readonly_fields = ('created','edited')
list_filter = ('status',)
search_fields = ('first_name', 'last_name')
admin.site.register(Volunteer, VolunteerAdmin)
我有这个型号
class Volunteer(models.Model):
STATUSES = (
('Active', 'Active'),
('Paused', 'Paused'),
('Inactive', 'Inactive'),
)
first_name = models.CharField(max_length=50)
last_name = models.CharField(max_length=50)
email_address = models.CharField(max_length=100, null=True, blank=True)
picture = models.ImageField(null=True, blank=True)
status = models.CharField(max_length=20, choices=STATUSES, default="Active")
created = models.DateTimeField(auto_now_add=True, editable=False)
edited = models.DateTimeField(auto_now=True, editable=False)
然后我就这样注册了
class VolunteerAdmin(admin.ModelAdmin):
fields = ('first_name', 'last_name', 'email_address', 'status', 'created', 'edited')
list_display = ('first_name', 'last_name', 'email_address', 'status')
list_editable = ('status',)
list_filter = ('status',)
search_fields = ('first_name', 'last_name')
admin.site.register(Volunteer, VolunteerAdmin)
我收到一个错误,因为我手动添加了创建和编辑的字段,因为我想在 view/edit 表单中看到它们。我知道用户不应该能够更改这些,所以我将两者的属性设置为 editable=False。但是,它会引发错误。知道我需要做什么才能在我的管理表单中显示这两个字段吗?
这是我的错误: 'created' 无法为志愿者模型表单指定,因为它是一个不可编辑的字段。检查 class VolunteerAdmin 的 fields/fieldsets/exclude 属性。
感谢您的帮助。
我想你可以去掉字段行,如果你愿意,可以在显示列表中添加 'created'、'edited',通常你可以在每个志愿者的详细信息中自动看到该字段,
可能是因为您手动执行它而卡住了,在这种情况下,请删除您上次的迁移和数据库 (sqlite),然后重新执行 makemagrations 和迁移。
此外,如果您在 forms.py 中使用要在模板中使用的表单,则应排除 'created' 和 'edited',因为您无法编辑它们。
您应该考虑在只读字段中添加 created 和 edited,例如:
readonly_fields = ('created','edited')
完整的代码片段:
class VolunteerAdmin(admin.ModelAdmin):
fields = ('first_name', 'last_name', 'email_address', 'status','created','edited')
list_display = ('first_name', 'last_name', 'email_address', 'status')
list_editable = ('status',)
readonly_fields = ('created','edited')
list_filter = ('status',)
search_fields = ('first_name', 'last_name')
admin.site.register(Volunteer, VolunteerAdmin)