我基本上是在Django的一行中尝试两个连接,但我似乎找不到解决方案。在下面您可以看到models.py。
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 我想过滤那些姓史密斯的人,并显示他们的名字、出生日期、街道名称和他们城市的名字。我走了这么远:
Person.objects.filter(surname='Smith').values('name','birthdate','address__name','address__city__name')由于值'address__city__name‘中的最后一部分,这不起作用。我正试图用其他的方式来弄清楚这个城市的名字,但我似乎搞不懂。有什么建议吗?
发布于 2018-01-22 16:10:40
您的查询是正确的,必须是select_related.,您可以使用execute.However对其进行更多的优化。
obj = Person.objects.filter(surname='Kumar').select_related('address','address__city').values('name','birthdate','address__name','address__city__name')

https://stackoverflow.com/questions/48384645
复制相似问题