2010-08-04 1 views
1

Я хочу создать запрос, чтобы найти несоответствия. В качестве примераDjango Queryset Filter (возможно, нужен подзапрос)

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

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

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

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

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

+1

Не обфускайте свою модель. Что такое «какая-то машина» и «какая-то модель»? Иностранные ключи? –

+0

Вы должны привести пример ожидаемого ввода и вывода. Сейчас немного сложно понять, что именно вы имеете в виду. – OmerGertel

ответ

0

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

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