2014-04-02 63 views
0
class Car(models.Model): 
    carName = Model.CharField() 

class Wheel(models.Model): 
    wheelName = Model.CharField() 
    car = Model.ForeignKey(Car) 

class Equipment(models.Model): 
    equipmentName = Model.CharField() 
    car = Model.ForeignKey(Car) 

我想要查詢所有具有相同名稱和設備的汽車。 我寫這樣的過濾器:使用Django進行多表查詢的正確方法

Car.objects.filter(wheel__wheelname = 'A', equipment__equipmentname='C') 

,但我得到了錯誤 無法解析關鍵詞「」到現場,選項包括:X,XX,XXX

那麼,這個不Django支持? 順便說一句,我檢查了表,它似乎默認表有一個前綴名稱相同的應用程序名稱,如blog_car,我怎麼能在django 1.6.2中禁用它?

回答

0

您正在查詢的是Car型號(表),該型號的產品有carname,沒有車輪或設備。這就是你得到錯誤的原因。我認爲你的模型設計是錯誤的。它應該是這樣的:

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

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

class Car(models.Model): 
    name = Model.CharField() 
    wheel = Model.ForeignKey(Wheel) 
    equipment = Model.ForeignKey(Equipment) 

而且你不應該在模型車中命名字段carName。已經屬於汽車。它的名字是誰? :D

+0

哦,我明白了。所以它應該是這樣的:Car.objects.filter(wheel__name =='A',equipment__name =='B')? – python

相關問題