【问题标题】:How to query from multiple models in django如何从 django 中的多个模型中查询
【发布时间】:2021-12-12 17:13:17
【问题描述】:

我试图了解从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)

提前谢谢你。

【问题讨论】:

  • 你应该可以得到student.address

标签: python python-3.x django django-models


【解决方案1】:

您可以通过以下方式查询:

City.objects.get(<strong>address__student=<em>mystudent</em></strong>)

这将产生一个如下所示的查询:

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

【讨论】:

    猜你喜欢
    • 2011-05-03
    • 1970-01-01
    • 2021-09-24
    • 2018-02-27
    • 2020-03-29
    • 1970-01-01
    • 2020-01-02
    • 1970-01-01
    • 2010-12-14
    相关资源
    最近更新 更多