Django QuerySet结果,结果中包含空字段

时间:2011-03-04 20:45:45

标签: django null many-to-many duplicates

我必须得到一个具有多对多关系的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个结果的值列表,跨越多个表,如此处所示?

我需要这个,以便我可以创建一个可以包含空字段的报告,因此必须列出重复的结果。

谢谢!

1 个答案:

答案 0 :(得分:1)

尝试编写执行该操作的SQL查询。你不能,因为这是对该数据结构的错误查询。想象一下,将有2辆汽车被分配到房屋1.它应该是1-[car-1]-John1-[car-2]-Merry还是1-[car-2]-John1-[car-1]-Merry