我必须得到一个具有多对多关系的QuerySet,其结果数量与在数据库中执行查询时的结果相同,但无法管理如何执行此操作;我不在乎我是否可以将结果作为QuerySet项或作为值项获得,但我确实得到相同数量的结果。
想象一下以下场景:
class Person(models.Model):
name = models.CharField()
class Car(models.Model):
name = models.CharField()
class House(models.Model):
people = models.ManyToMany(Person)
cars = models.ManyToMany(Car)
house_1 = House.objects.create()
house_2 = House.objects.create()
john = Person.objects.create(name='John')
mary = Person.objects.create(name='Mary')
house_1.people.add(john)
house_1.people.add(mary)
mike = Person.objects.create(name='Mike')
ferrari = Car.objects.create(name='Ferrari')
house_2.people.add(mike)
house_2.cars.add(ferrari)
'''
Expected search result, regardless of the result format (model instances or values):
------------------------------------
| House ID | Car | Person |
| 1 | | John |
| 1 | | Mary |
| 2 | Ferrari | Mike |
------------------------------------
'''
我如何得到一个包含所有3个结果的值列表,跨越多个表,如此处所示?
我需要这个,以便我可以创建一个可以包含空字段的报告,因此必须列出重复的结果。
谢谢!
答案 0 :(得分:1)
尝试编写执行该操作的SQL查询。你不能,因为这是对该数据结构的错误查询。想象一下,将有2辆汽车被分配到房屋1.它应该是1-[car-1]-John
,1-[car-2]-Merry
还是1-[car-2]-John
,1-[car-1]-Merry
?