我有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()

关于python - Django,ManyToMany字段,带有额外字段的正确对象,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25125304/

10-12 17:52