【问题标题】:Custom Django Adminsite Doesn't show link to read_only ForeignKey field自定义 Django Adminsite 不显示指向只读 ForeignKey 字段的链接
【发布时间】: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),并带有指向相关模型的更改视图的链接:

Link pointing to Chang View

但如果我在自定义管理站点中注册模型,则不会生成链接。

如何扩展我的自定义管理站点以生成这些链接?

PD1:我知道我可以编写自定义方法来构建链接,但这不是一种 DRY 方式,并且不适用于 get_readonly_fields 方法

PD2:如果我在默认管理站点中注册相关模型(示例中为 ModelA),则会生成链接,但指向默认管理站点,从而破坏了自定义管理站点的目的。

【问题讨论】:

    标签: python django django-admin


    【解决方案1】:

    我在官方 Django 论坛上发布了同样的问题: forum.djangoproject.com/t/9472/5

    它生成了一张票,因为在帮助类 AdminReadOnlyField 的方法 get_admin_url 中缺少一行,临时解决方案在票中:code.djangoproject.com/ticket/33077

    PD:为什么有人将这篇文章标记为一个糟糕的问题?它为补丁生成了一张票,所以这是一个公平的问题,这是我在 StackOverflow 中的第一个问题,这令人沮丧。

    【讨论】:

    • 嗨 Rigo,以下只是帮助,首先有一些拼写和语法错误使您的问题有点难以阅读,使用 SO 文本编辑器非常容易捕捉拼写错误如果您可以访问谷歌驱动器,它有助于语法。然后是您必须指向图像的链接,最好将链接中看到的文本粘贴到您的问题中,我不知道为什么它被否决,但如果解决这些问题只会有助于避免投反对票.结构良好、清晰易读且格式正确的问题总能得到更多帮助。
    • 感谢您的回答奈杰尔。根据两个文本编辑器,我只有一个拼写错误。我在 Django 论坛上发布了同样的问题,并且完全理解。所以我认为问题在于有些人在“审查”问题并且不理解问题,因此他们认为问题不清楚。
    猜你喜欢
    • 2019-04-03
    • 1970-01-01
    • 2011-03-04
    • 2021-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-01
    相关资源
    最近更新 更多