我有2个模型:用户和汽车,我想为用户创建一个字段,用于保存用户汽车列表。我创建了3个类:
class Car():
type = ...
class User():
name = ...
cars = models.ManyToManyField(Car, through='CarList')
class CarList():
owner = models.ForeignKey(User)
car_type = models.ForeignKey(Car)
extra_field = ...
extra_field2 = ...
现在,当我想获得用户的汽车时,我可以使用User.cars.all()“function”,它返回所有汽车的列表。这是公平和良好的,除了它返回Car对象的外键列表而不是CarList对象(有额外的字段!!)
我知道我可以使用不同的查询,例如:CarList.objects.get(owner=user, car_type=user.cars.all()[0]), etc...
,但这只是不方便。
那么有一个查询会给我“CarList”对象吗?
答案 0 :(得分:3)
如果我理解正确,您有一个用户,并且您想获得CarList。由于您有一个从CarList到User的ForeignKey,这是一个简单的向后关系:
carlists = user.carlist_set.all()
答案 1 :(得分:0)
是的,你可以,你只需要这样做:
result = Car.user_set.filter(your_query)
然后您可以从结果查询集
访问额外字段您可以从Django Docs查看更好的示例: