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 carsome 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 时是不是需要子查询?

需要子查询条件输出

如何使用 StringAgg 或 ArrayAgg 连接多个子行中的一列来注释 django 查询集?

Django 查询集过滤空 JSONField

以不同方式统计客户 - 我需要子查询吗?