开发者

Django QuerySet result with null fields in results

I have to get a QuerySet with many-to-many relations with the same number of results as if I executed the query in the database, but can't manage how to do this; I don't care if I can get the results as a QuerySet item or as a values item, but I do care to get the same number of results.

Imagine the following scenario:

class Person(models.Model):
    name = models.CharField()


class Car(models开发者_Go百科.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       |
------------------------------------

'''

How can I get a list of values, with all 3 results, spanning multiple tables, as here?

I need this so that I can create a report which can potentialy contain null fields, so the duplicated results must be listed.

Thanks!


Try to write SQL query that does that. You can't because it's wrong query to that data structure. Imagine that there will be 2 cars assigned to house 1. Should it be 1-[car-1]-John, 1-[car-2]-Merry or 1-[car-2]-John, 1-[car-1]-Merry?

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜