Фильтр запросов Django (возможно, нуждается в подзапросе) - PullRequest
1 голос
/ 04 августа 2010

Я хочу создать набор запросов, чтобы найти несоответствия. Как пример

class Vehicle(models.Model):
    car = models.CharField(max_length=100)
    model= models.CharField(max_length=100)
    passengers = models.IntegerField()

Я хочу создать запрос, в котором я могу найти автомобили, ошибочно перечисленные в двух разных моделях.

что-то вроде запроса, чтобы найти, что если автомобиль = Wrangler, модель = Jeep, чтобы найти экземпляры автомобиля = Wrangler, модель не является Jeep.

Возможно ли это сделать в ORM или мне нужно использовать сырой SQL? Кто-то в #django предложил подзапрос, но я не знаю, как это сделать

Пример вывода будет просто набором запросов несовпадающих транспортных средств (например, car = Wrangler, модель = Ford существует для одного объекта, но car = Wrangler, модель = Jeep для другого объекта). Я думал о том, что у меня нет возможности просто найти несоответствия. Имеет ли это смысл?

1 Ответ

0 голосов
/ 07 ноября 2015

Если я понимаю, что вам нужно, чтобы модель + автомобиль были уникальными вместе, вам нужно сначала найти повторяющиеся записи:

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)

Это даст вам cars, который был определен более чем с одним model

...