Avatar ·

Удалить дубликаты из queryset

📁 django

Добрый день, имеется queryset, нужно из него удалить дубликаты:

example = models.Object.objects.values('name', 'photo__name').distinct()

имеем джоин, в результате нужно получить чтобы name и photo__name не имели одинаковых значений, как это реализовать используя Django ORM ? Cпасибо!

Avatar ·

Есть решение в лоб

example = models.Object.objects.values('name', 'photo__name').extra(    where=['""name"" != ""photo__name""']).distinct()

которое генерирует примерно следующий SQL

SELECT ""object"".""name"", ""photo"".""photo__name"" FROM ""object"" INNER JOIN [...]  WHERE (""name"" != ""photo__name"") ``

возможно из-за join придётся указать полные названия таблиц, например

where=['""object"".""name"" != ""photo"".""photo__name""']

Войдите чтобы оставить ответ

Блоги