2017-06-16 44 views
0

我有一个模型设置是这样的:Django的查询到过滤查询设置

class Category(models.Model): 
    name = models.CharField() 

class CarModel(models.Model): 
    name = models.CharField() 
    category = models.ForeignKey(Category, on_delete=models.CASCADE) 

class Car(models.Model): 
    owner = models.ForeignKey(User, on_delete=models.CASCADE) 
    car_model = models.ForeignKey(CarModel, null=True, on_delete=models.CASCADE) 

我怎样才能得到一个查询与当前用户拥有的汽车的所有类别设置?

谢谢! 牛逼

+0

你尝试过什么?您是否阅读过文档中的示例https://docs.djangoproject.com/en/1.11/topics/db/queries/#lookups-that-span-relationships? –

+0

查询文档页面似乎没有两个深层的外键示例,有趣的是,它没有引用.values()。在Fazil发布后,我发现这个链接很有用:[https://docs.djangoproject.com/en/1.11/ref/models/querysets/#django.db.models.query.QuerySet.values](https://docs .djangoproject.com/en/1.11/ref/models/querysets /#django.db.models.query.QuerySet.values) – Tsmith

回答

0

你可以做,

Car.objects.filter(owner=request.user).select_related('car_model__category').all() 
+0

甜!我添加了.distinct()以获得我正在寻找的内容。 Car.objects.filter(owner = request.user).values('car_model__category__name')。distinct() – Tsmith

+0

欣赏支持人! – zaidfazil

+0

或者可以通过'value_list',@Tsmith' Car.objects.filter(owner = request.user).values_list('car_model__category__name',flat = True)来完成' –