在 Django 管理更改/添加页面中显示 ForeignKey 数据
Posted
技术标签:
【中文标题】在 Django 管理更改/添加页面中显示 ForeignKey 数据【英文标题】:Displaying ForeignKey data in Django admin change/add page 【发布时间】:2011-08-05 15:03:06 【问题描述】:我正在尝试让模型的属性显示在另一个模型的 Django 管理更改/添加页面中。这是我的模型:
class Download(model.Model):
task = models.ForeignKey('Task')
class Task(model.Model):
added_at = models.DateTimeField(...)
不能切换外键,所以我不能使用内联,当然fields = ('task__added_at',)
在这里也不起作用。
这样的标准方法是什么? (还是我把 Admin 拉得太远了?)
我已经在使用自定义模板,所以如果这是可以做到的答案。但是,我更愿意在管理员级别执行此操作。
【问题讨论】:
您能否就您试图在管理员中实现的工作流程提供更多背景信息?从您的帖子看来,您正在编辑下载,并且需要访问任务模型,对吗? 用户请求下载,该下载由延迟任务生成并通过电子邮件发送给他们(我在 Windows 上,所以没有 celeryd,更可惜) 好的,那么外键字段需要做什么呢? 显示Download.task.added_at
@BrianHicks 你能做到吗?
【参考方案1】:
如果不需要编辑,可以将其显示为只读字段:
class DownloadAdmin(admin.ModelAdmin):
readonly_fields = ('task_added_at',)
def task_added_at(self, obj):
return obj.task.added_at
【讨论】:
那行不通,因为 readonly_fields 必须是字段的子集,而且我不能向字段添加函数。 我不明白你的意思。这确实有效 - 请参阅the documentation。 也适用于字段集。荣誉。以上是关于在 Django 管理更改/添加页面中显示 ForeignKey 数据的主要内容,如果未能解决你的问题,请参考以下文章
Django将硬编码的href链接添加到管理模型的表单视图页面