Skip to main content
 首页 » 编程设计

python之Django,ManyToMany 字段,获取具有额外字段的正确对象

2024年08月27日35artech

我有 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()“函数”,它会返回他所有汽车的列表。这一切都是公平和好的,除了它返回 Car 对象的外键列表而不是 CarList 对象(它有额外的字段!!)

我知道我可以使用不同的查询,例如:CarList.objects.get(owner=user, car_type=user.cars.all()[0]), etc... 但是这很不方便。

那么是否有一个查询会给我“CarList”对象?

请您参考如下方法:

如果我对你的理解是正确的,你有一个用户,你想得到 CarList。由于您有一个从 CarList 到 User 的 ForeignKey,这是一个简单的向后关系:

carlists = user.carlist_set.all()