在管理渲染中将 Django 只读外键字段设置为链接
我在 Django 的管理中公开了一个模型,它使用 ModelAdmin 的 readonly_fields 列表来显示“用户”字段,该字段是链接到 Django 的用户模型的 ForiegnKey。默认情况下,readonly_fields 会导致此字段呈现为包含用户电子邮件的简单文本(例如 [电子邮件受保护]
)。我如何更改它以呈现为该用户关联管理页面的链接? (例如 [电子邮件受保护]
)
I have a model exposed in Django's admin, which uses ModelAdmin's readonly_fields list to show a "user" field, which is a ForiegnKey linking to Django's User model. By default, readonly_fields causes this field to be rendered as simple text containing the user's email (e.g. [email protected]
). How would I change this to render as a link to the associated admin page for that user? (e.g. <a href="/admin/auth/user/123/">[email protected]</a>
)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
深入研究源代码,我发现您基本上可以将自己的字段定义为 ModelAdmin 子类中的方法,并且只需从该方法返回链接 html 即可将该字段呈现为链接。
例如
Digging into the source code, I found you can essentially define your own fields as methods within your ModelAdmin subclass, and you can get the field to render as a link by simply returning the link html from the method.
e.g.
Cerin 的答案在我的 Django 1.8 项目中不起作用,因为 readonly_fields 不应包含字符串“user_link”,而应包含对已定义函数的引用:
请注意,user(obj) 会覆盖 Profile.user 字段的单个模型编辑和模型列表显示。另请注意,readonly_fields 同时使用用户和“用户”,一个呈现链接的电子邮件,另一个呈现用户名。
Cerin's answer does not work in my Django 1.8 project, because readonly_fields should not contain string 'user_link', but a reference to defined function:
Note that user(obj) overrides both single model edit and model list display for Profile.user field. Note also that readonly_fields uses both user and 'user', one renders linked email, another one user name.
我创建了一些 mixin:
所以在管理页面中它将看起来像链接字符串。
I created some mixin:
So in admin page it will look as linked string.