python - 如何从 django 中的多个模型中查询
问题描述
我试图了解从Django
.
class City():
name = models.CharlField()
class Address():
line1 = models.CharlField()
...
city_id = models.ForeignKey(City, ... related_name="city_address")
class Student()
name = models.CharlField()
gender = models.CharlField()
# a student can only have one address
address_id = models.OneToOneField(Address, ... related_name="address_student")
如何优化下面的查询以获取该学生所属的城市?
student = Student.objects.filter(name="John").first() # assuming its a unique name
address_id = student.address_id
address = Address.objects.filter(id=address).first()
city_id = address.city_id
City.objects.get(id=city_id)
先感谢您。
解决方案
您可以通过以下方式查询:
City.objects.get(address__student=mystudent)
这将产生一个如下所示的查询:
SELECT city.*
FROM city
INNER JOIN address ON address.city_id_id = city.id
INNER JOIN student ON student.address_id_id = address.id
WHERE student.id = id_of_the_student
推荐阅读
- reactjs - 使用 Strapi 和 React.js 发送邮件
- ios - PushKit 通知在通话结束后到达
- javascript - 从变量引用时,setAttribute 不是函数
- javascript - scope.data 没有 foreach 方法
- python - 如果它包含指定的短语,则删除整个 JSON 对象(来自 python 中的列表)
- php - 没有这样的文件或目录:我该如何解决这个问题?
- javascript - Firebase 云功能在部署时未更新 - 仍在服务旧版本的功能
- javascript - jQuery 函数仅在调试器模式下工作
- c++ - QT C++ OPENGL 和在其他机器上运行时的问题
- image - whatsapp 在哪里存储默认壁纸的图像?