在 Django 的管理模型详细信息中显示模型父字段
Show model parent fields in Django's admin model details
我让我的大部分模型继承自:
class TimeStampedModel(models.Model):
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
class Meta:
abstract = True
get_latest_by = 'updated_at'
像这样:
class Sale(TimeStampedModel):
ip_address = models.GenericIPAddressField(null=True)
# ...
但是,如果我访问 /admin/myapp/sale/123/change/
,我只会看到 ip_address
字段。
我怎样才能同时看到 created_at
和 updated_at
字段?可能,不必在列表中指定 Sale
的每个字段。
您现在无法显示此字段,因为当您将 auto_now_add
添加到模型中时,它还会将 editable=False
设置到您的字段中。因此,您的字段是只读的。
来自 docs:
As currently implemented, setting auto_now or auto_now_add to True will cause the field to have editable=False and blank=True set.
要在管理界面中显示任何只读字段,您必须在管理视图中添加 readonly_fields = ['field_name']
定义,如下所示:
@admin.register(Sale)
class SaleAdmin(admin.ModelAdmin):
readonly_fields = ['created_at','updated_at']
我让我的大部分模型继承自:
class TimeStampedModel(models.Model):
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
class Meta:
abstract = True
get_latest_by = 'updated_at'
像这样:
class Sale(TimeStampedModel):
ip_address = models.GenericIPAddressField(null=True)
# ...
但是,如果我访问 /admin/myapp/sale/123/change/
,我只会看到 ip_address
字段。
我怎样才能同时看到 created_at
和 updated_at
字段?可能,不必在列表中指定 Sale
的每个字段。
您现在无法显示此字段,因为当您将 auto_now_add
添加到模型中时,它还会将 editable=False
设置到您的字段中。因此,您的字段是只读的。
来自 docs:
As currently implemented, setting auto_now or auto_now_add to True will cause the field to have editable=False and blank=True set.
要在管理界面中显示任何只读字段,您必须在管理视图中添加 readonly_fields = ['field_name']
定义,如下所示:
@admin.register(Sale)
class SaleAdmin(admin.ModelAdmin):
readonly_fields = ['created_at','updated_at']