【问题标题】:Show created and edited fields in Django admin form在 Django 管理表单中显示创建和编辑的字段
【发布时间】:2021-05-04 07:41:15
【问题描述】:

我有这个模型

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)

我收到一个错误,因为我手动添加了创建和编辑的字段,因为我想在查看/编辑表单中看到它们。我知道用户不应该能够更改这些,所以我将两者的属性都设置为 editable=False。但是,它会引发错误。知道我需要做什么才能在我的管理表单中显示这两个字段吗?

这是我的错误: 不能为志愿者模型表单指定“已创建”,因为它是不可编辑的字段。检查 VolunteerAdmin 类的字段/字段集/排除属性。

感谢您的帮助。

【问题讨论】:

  • 你能展示你的views.py吗?
  • 这只是管理部分的问题。我什至还没有对它的看法。

标签: django django-models django-admin django-modeladmin


【解决方案1】:

您应该考虑在只读字段中添加 creatededited,例如:

readonly_fields = ('created','edited')

完整代码sn-p:

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)

【讨论】:

  • 完美运行。非常感谢!
【解决方案2】:

我认为您可以摆脱字段行,如果需要,将“创建”、“编辑”添加到显示列表中,通常您可以在每个志愿者的详细信息中自动查看该字段,

可能是因为您手动执行它而卡住了,在这种情况下,请删除您上次的迁移和数据库 (sqlite),然后重新执行 makemagrations 和迁移。

此外,如果您在 forms.py 中使用要在模板中使用的表单,则应排除“已创建”和“已编辑”,因为您无法编辑它们。

【讨论】:

  • 这仅适用于管理部分。我什至还没有意见。当我删除字段行时,页面呈现但不包括添加和编辑的字段。我不想将它们添加到 list_display 因为我不想在表中看到该数据,只在记录级别。
猜你喜欢
  • 2016-02-04
  • 1970-01-01
  • 2011-02-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-18
  • 2018-11-20
  • 1970-01-01
相关资源
最近更新 更多