【问题标题】:Displaying ForeignKey data in Django admin change/add page在 Django 管理更改/添加页面中显示 ForeignKey 数据
【发布时间】: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 你能做到吗?

标签: python django django-models django-admin


【解决方案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
  • 也适用于字段集。荣誉。
猜你喜欢
  • 2019-02-03
  • 1970-01-01
  • 2013-01-27
  • 1970-01-01
  • 2019-03-13
  • 2011-05-09
  • 2023-03-04
  • 1970-01-01
  • 2016-03-20
相关资源
最近更新 更多