首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Django ORM,从三个表中获取变量

Django ORM,从三个表中获取变量
EN

Stack Overflow用户
提问于 2018-01-22 15:09:11
回答 1查看 726关注 0票数 0

我基本上是在Django的一行中尝试两个连接,但我似乎找不到解决方案。在下面您可以看到models.py

代码语言:javascript
运行
复制
from django.db import models

class Person(models.Model):
    name = models.CharField(max_length=100)
    surname = models.CharField(max_length=100)
    birthdate = models.DateTimeField()
    phonenumber = models.CharField(max_length=100)
    address = models.ForeignKey(Address,on_delete=models.CASCADE)
    def __str__(self):
        return self.name

class Address(models.Model):
    name = models.CharField(max_length=100)
    number = models.IntegerField()
    city = models.ForeignKey(City,on_delete=models.CASCADE)
    def __str__(self):
        return self.name

class City(models.Model):
    zippcode = models.CharField(max_length=10,primary_key=True,unique=True)
    name = models.CharField(max_length=100)
    def __str__(self):
        return self.name 

我想过滤那些姓史密斯的人,并显示他们的名字、出生日期、街道名称和他们城市的名字。我走了这么远:

代码语言:javascript
运行
复制
Person.objects.filter(surname='Smith').values('name','birthdate','address__name','address__city__name')

由于值'address__city__name‘中的最后一部分,这不起作用。我正试图用其他的方式来弄清楚这个城市的名字,但我似乎搞不懂。有什么建议吗?

EN

回答 1

Stack Overflow用户

发布于 2018-01-22 16:10:40

您的查询是正确的,必须是select_related.,您可以使用execute.However对其进行更多的优化。

代码语言:javascript
运行
复制
obj = Person.objects.filter(surname='Kumar').select_related('address','address__city').values('name','birthdate','address__name','address__city__name')

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48384645

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档