2014-04-02 33 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

相关问题