按外键按字段过滤

时间:2018-12-30 09:23:40

标签: python django django-models django-views

我有两个相互关联的模型

class IndustryService(models.Model):    
    title = models.CharField(max_length=120)
    pricingisarate = models.BooleanField(default=False) 

class UserService(models.Model):  
    user = models.ForeignKey(User, on_delete=models.CASCADE) 
    title = models.ForeignKey(IndustryService, on_delete=models.CASCADE, null=True, blank=True)

在一个视图内,我正在尝试开发一个UserService实例的查询集

a)属于用户

b)外键上有pricingisarate == True

我已经尝试了以下查询,但是不起作用:

 services = UserService.objects.filter(user=user, industryservice__pricingisarate__is=True)

感谢您的帮助!

3 个答案:

答案 0 :(得分:0)

知道了!

services = UserService.objects.filter(user=user, title__pricingisarate=True)

答案 1 :(得分:0)

您可以通过在外键定义的名称和您要以此进行过滤的子字段名称之间使用双下划线来过滤外键字段,对于您的情况,这类似于以下内容:

title__pricingisarate

您的查询必须更改如下:

services = UserService.objects.filter(user=user, title__pricingisarate=True)

某些formal examples of Django about this article可用...

答案 2 :(得分:0)

services = UserService.objects.filter(user=user, title__pricingisarate=True)

因为UserService与使用查找标题的IndustryService模型有关。

请参考此链接-https://docs.djangoproject.com/en/2.1/topics/db/queries/#lookups-that-span-relationships