在 Django 管理更改/添加页面中显示 ForeignKey 数据

2022-01-25 00:00:00 python django django-models django-admin

问题描述

我正在尝试让模型的属性显示在另一个模型的 Django 管理更改/添加页面中.这是我的模型:

I'm trying to get an attribute of a model to show up in the Django admin change/add page of another model. Here are my models:

class Download(model.Model):
    task = models.ForeignKey('Task')

class Task(model.Model):
    added_at = models.DateTimeField(...)

不能切换外键,所以我不能使用内联,当然 fields = ('task__added_at',) 在这里也不起作用.

Can't switch the foreignkey around, so I can't use Inlines, and of course fields = ('task__added_at',) doesn't work here either.

这样的标准方法是什么?(还是我把 Admin 拉得太远了?)

What's the standard approach to something like this? (or am I stretching the Admin too far?)

我已经在使用自定义模板,所以如果这是可以做到的答案.但是,我更愿意在管理员级别执行此操作.

I'm already using a custom template, so if that's the answer that can be done. However, I'd prefer to do this at the admin level.


解决方案

如果不需要编辑,可以显示为只读字段:

If you don't need to edit it, you can display it as a readonly field:

class DownloadAdmin(admin.ModelAdmin):
    readonly_fields = ('task_added_at',)

    def task_added_at(self, obj):
        return obj.task.added_at

相关文章