【发布时间】:2021-08-30 14:57:14
【问题描述】:
在默认的 Django 管理站点中,如果模型注册了 ForegingKey 字段,并且这些字段包含在 readonly_fields 中(使用模型属性或 get_readonly_fields 方法),则该字段的值将通过指向更改视图的链接呈现,但是这不适用于自定义 Django 管理站点。 例如:我有这两个模型:
class ModelA(models.Model):
field_a = models.CharField(max_length=50)
class ModelB(models.Model):
model_a = models.ForeignKey(ModelA, on_delete=models.PROTECT)
我在默认的 Django 管理站点中注册了:
admin.register(ModelA)
@register(ModelB)
class ModelBAdmin(admin.ModelAdmin):
model = ModelB
readonly_fields = ["model_a"]
所以我在 Admin 中的 ModelB 的更改视图中获取了字段的值(模型的 str),并带有指向相关模型的更改视图的链接:
但如果我在自定义管理站点中注册模型,则不会生成链接。
如何扩展我的自定义管理站点以生成这些链接?
PD1:我知道我可以编写自定义方法来构建链接,但这不是一种 DRY 方式,并且不适用于 get_readonly_fields 方法
PD2:如果我在默认管理站点中注册相关模型(示例中为 ModelA),则会生成链接,但指向默认管理站点,从而破坏了自定义管理站点的目的。
【问题讨论】:
标签: python django django-admin