С Django 1.7, используя следующий код на мой взгляд:Джанго связанные _set с order_by показом дублирует
driver = get_object_or_404(Driver, id=self.object.id)
cars = driver.car_set.order_by('model__market_date')
for car in cars: # for testing only
print car.id # outputs e.g. 3, 3, 3, 5
Когда я пытаюсь это, я получаю повторяющиеся результаты для автомобилей (например, в два раза автомобиля # 3), в зависимости от количество моделей. Я не хочу этого.
Однако, когда я использую cars = driver.car_set.all()
, дублирующих результатов нет. Но я хочу, чтобы мой список автомобилей сортировался по market_date
.
Любой указатель на то, как исправить это? Я пробовал с aggregate() и distinct(), но это не исправило ситуацию, к сожалению (или я делаю что-то неправильно).
Мои попытки с distinct()
:
driver.car_set.order_by('model__market_date').distinct()
причины дублируетdriver.car_set.order_by('model__market_date').distinct('model__market_date')
причины дублируетdriver.car_set.order_by('model__market_date').distinct('pk')
даетException Value: SELECT DISTINCT ON expressions must match initial ORDER BY expressions
Я удаляю этот ответ, редактирую ваш вопрос и добавляю, что вы пробовали 'distinct()' – madzohan
Спасибо @madzohan, done. – SaeX