2011-03-04 99 views
0

我必須得到一個具有多對多關係並具有相同數量結果的QuerySet,就好像我在數據庫中執行查詢一樣,但無法管理如何執行此操作;我不在乎是否可以將結果作爲QuerySet項目或值項目獲得,但我確實在意獲得相同數量的結果。Django 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

嘗試編寫這樣做的SQL查詢。你不能,因爲這是對這個數據結構的錯誤查詢。想象一下,將有2輛車分配到房屋1.應該是1-[car-1]-John,1-[car-2]-Merry1-[car-2]-John1-[car-1]-Merry

+0

這確實是一個奇怪的情況,Tomasz,但案例是我不得不改變我正在從原始SQL到Django的ORM的項目中的實現。使用原始SQL時,它們設法返回具有空值的列,這些是我必須使用ORM來捕獲的情況。 – diogobaeder 2011-03-08 14:52:59

+0

但是現在的情況是,上週我辭掉了工作。所以我只會認爲這是一個尷尬的場景,希望不必在我的生活中再次處理應用程序中的巨大原始SQL。謝謝您的幫助! ;-) – diogobaeder 2011-03-08 14:55:24