如何访问外键数据而无需在 Wagtail(django) 中进行额外查询

sun*_*eet 4 python django django-models wagtail

我有以下两个类,我app.models正在使用 wagtail API 将数据作为 json

class AuthorMeta(Page):
    author=models.OneToOneField(User)
    city = models.ForeignKey('Cities', related_name='related_author')

class Cities(Page):
    name = models.CharField(max_length=30)
Run Code Online (Sandbox Code Playgroud)

因此,当我尝试时/api/v1/pages/?type=dashboard.AuthorMeta&fields=title,city,它返回以下数据:

{
    "meta": {
        "total_count": 1
    },
    "pages": [
        {
            "id": 11,
            "meta": {
                "type": "dashboard.AuthorMeta",
                "detail_url": "http://localhost:8000/api/v1/pages/11/"
            },
            "title": "Suneet Choudhary",
            "city": {
                "id": 10,
                "meta": {
                    "type": "dashboard.Cities",
                    "detail_url": "http://localhost:8000/api/v1/pages/10/"
                }
            }
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

在城市字段中,它返回城市的idmeta。如何在不进行额外查询的情况下在此处的响应中获取城市名称?:/

我在文档中找不到任何解决方案。我错过了什么吗?

Dhi*_*aTN 6

使用 Django 模型属性通过 ForeignKey 返回:

class AuthorMeta(Page):
    author=models.OneToOneField(User)
    city = models.ForeignKey('Cities', related_name='related_author')
    city_name = property(get_city_name)

    def get_city_name(self):
        return self.city.name
Run Code Online (Sandbox Code Playgroud)

检查术语属性以更好地理解概念