Результат Django QuerySet с пустыми полями в результатах - PullRequest
0 голосов
/ 04 марта 2011

Мне нужно получить 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       |
------------------------------------

'''

Как получить список значений со всеми тремя результатами, охватывающими несколько таблиц, как здесь?

Мне это нужно, чтобы я мог создать отчет, который может содержать пустые поля, поэтому дублированные результаты должны быть перечислены.

Спасибо!

1 Ответ

1 голос
/ 05 марта 2011

Попробуйте написать запрос SQL, который делает это.Вы не можете, потому что это неправильный запрос к этой структуре данных.Представьте, что для дома 1 будет назначено 2 автомобиля. Это должно быть 1-[car-1]-John, 1-[car-2]-Merry или 1-[car-2]-John, 1-[car-1]-Merry?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...