Django 查询集过滤器(可能需要子查询)
Posted
技术标签:
【中文标题】Django 查询集过滤器(可能需要子查询)【英文标题】:Django Queryset Filter (Maybe Needs a Subquery) 【发布时间】:2010-08-04 15:11:33 【问题描述】:我想生成一个查询集来查找不匹配。举个例子
class Vehicle(models.Model):
car = models.CharField(max_length=100)
model= models.CharField(max_length=100)
passengers = models.IntegerField()
我想生成一个查询,我可以在其中找到错误地列出了两种不同型号的汽车。
类似于查询的内容,如果 a car = Wrangler, model = Jeep 查找 car = Wrangler, model 不是 Jeep 的实例。
这可以在 ORM 中完成,还是我需要使用原始 SQL? #django 中有人建议使用子查询,但我不熟悉如何执行此操作
样本输出 将只是不匹配车辆的查询集(例如 car = Wrangler,model = Ford 存在一个对象,但 car = Wrangler,model = Jeep 存在另一个对象)。我在想没有输入只是能够找到不匹配的地方。这有意义吗?
【问题讨论】:
不要这样混淆你的模型。some car
和 some model
是什么?外键?
你应该给出一个预期输入和输出的例子。目前有点难以理解你到底是什么意思。
【参考方案1】:
如果我理解你需要模型+汽车是唯一的,所以你需要先找到重复的记录:
from django.db.models.aggregates import Count
repetitve_cars_list = Vehicle.objects.values('car').annotate(count_car=Count('car')).filter(co
unt_car__gt=1)
这将为您提供由多个model
定义的cars
【讨论】:
以上是关于Django 查询集过滤器(可能需要子查询)的主要内容,如果未能解决你的问题,请参考以下文章
在 UNION 查询中执行 DISTRIBUTE BY 时是不是需要子查询?