Python 如何使用外键从另一个表中添加多个字段以显示列表?

Python 如何使用外键从另一个表中添加多个字段以显示列表?,python,django,Python,Django,假设我有两个模型: class Post(models.Model): pub_date=models.datetime字段(auto_now=True) num_views=models.IntegerField(默认值=0) 及 class PostDetails(models.Model): title=models.CharField(最大长度=128) text=models.TextField(最大长度=512) language=models.CharField(max_leng

假设我有两个模型:

class Post(models.Model):
pub_date=models.datetime字段(auto_now=True)
num_views=models.IntegerField(默认值=0)

class PostDetails(models.Model):
title=models.CharField(最大长度=128)
text=models.TextField(最大长度=512)
language=models.CharField(max_length=2,default=“en”)#可以是“en”、“jp”、“fr”等。。。
post=models.ForeignKey(post,related_name=“post”,on_delete=models.CASCADE)
user=models.ForeignKey(user,related\u name=“user”,on\u delete=models.CASCADE)
类元:
唯一的组合=[“帖子”,“语言”]
我想在
Post
列表中显示
PostDetails
中的信息。在
admin.py
文件中,我有以下内容:

class PostAdmin(admin.ModelAdmin):
字段集=[…]
内联线=[…]
列表显示=[“用户”、“en_标题”、“fr_标题”、“jp_标题”、“pup_日期”、“num_视图”]#每一个都需要在自己的列中
def en_标题(自身、obj):
返回obj.post.get(post=obj.id,language=“en”)
def fr_标题(自身、obj):
返回obj.post.get(post=obj.id,language=“fr”)
def jp_标题(自我,obj):
返回obj.post.get(post=obj.id,language=“fr”)
虽然这给了我想要的
list\u显示
,但它为我从
PostDetails
模型添加的每个列添加了一个查询

我考虑过使用
预回迁相关的
选择相关的
,但我找不到在函数之间共享查询集的方法

我是否可以通过一次查询从post_details表中获取所需的所有数据?或者至少尽可能少的查询


实现这一点的最佳方法是什么?

您可以如下所示显示帖子详细信息管理,并从帖子中获取字段

class PostDetailsAdmin(admin.ModelAdmin):
    list_display = (..., 'get_title')

    def get_title(self, obj):
        return obj.post.pub_date

你的意思是相反的。我考虑过了,但是我需要更改/编辑链接来指向父窗体,因为子窗体与父窗体内联以在一个位置添加和更新具有父窗体的所有窗体。您可以通过调用postdetails\u set.all()方法来获取子字段集。您可以在post\u details中使用list\u display作为选项