假设我有三个模型:User
、CarBrand
、CarModel
、CarCharacteristics
。 CarCharacteristics
模型描述了用户如何评价汽车的特性。因此,一个用户可以有许多 CarCharacteristics
对象,并且一个用户可以有许多 CarCharacteristics
。
这就是我的模型的样子:
class User(models.Model):
id = models.AutoField(primary_key=True)
class CarBrand(models.Model):
idcar_brand = models.AutoField(primary_key=True)
class CarModel(models.Model):
idcar_model = models.AutoField(primary_key=True)
car_brand = models.ForeignKey(CarBrand, null=True, on_delete=models.SET_NULL)
class CarCharacteristics(models.Model):
idcar_characteristics = models.AutoField(primary_key=True)
user = models.ForeignKey(User, on_delete=models.PROTECT)
car_model = models.ForeignKey(CarModel, on_delete=models.PROTECT)
我想做的是获取User
具有CarCharacteristics
的所有CarBrand
对象。这就是我现在正在做的事情:
car_chars = CarCharacteristics.objects.filter(user=user_id)
car_brands_ids = []
for car_char in car_chars:
brand_id = car_char.car_model.car_brand.idcar_brand
if brand_id not in car_brands_ids:
car_brands_ids.append(brand_id)
brands = CarBrand.objects.filter(idcar_brand__in=brand_ids)
有更简单的方法吗?如何获取存在 CarCharacteristics
的所有 CarModels
?
最佳答案
试试这个:
CarBrand.objects.exclude(carmodel__carcharacteristics__user=None).distinct()
关于django - 我将如何在 Django 中执行此查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14494351/