在Django管理后台显示ForeignKey数据

9 投票
1 回答
6420 浏览
提问于 2025-04-16 15:44

我想在Django的管理后台中,让一个模型的某个属性显示在另一个模型的添加或修改页面上。以下是我的模型:

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

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

我不能改变外键的设置,所以不能使用内联(Inlines),当然 fields = ('task__added_at',) 在这里也不管用。

像这种情况,通常的做法是什么呢?(或者说我是不是在过度使用管理后台的功能?)

我已经在使用自定义模板了,如果这是解决办法的话也可以。不过,我更希望能在管理后台的层面上解决这个问题。

1 个回答

13

如果你不需要编辑这个内容,可以把它显示为只读字段:

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

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

撰写回答