开发者

Django QuerySet result with null fields in results

开发者 https://www.devze.com 2023-02-15 02:06 出处:网络
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 result

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

精彩评论

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