Я пытаюсь построить набор запросов в Django, где значения одного поля не содержатся ни в одном экземпляре той же таблицы. В качестве примера возьмем эту модель:Как сравнить значения полей между экземплярами в наборе запросов Django?
class MyModel(models.Model):
text = models.CharField(max_length = 100)
я могу получить не-дубликат QuerySet используя следующий цикл:
from django.db.models import Q
not_contained = MyModel.objects.all()
for instance in MyModel.objects.all():
not_contained=not_contained.exclude(Q(text__contains=instance.text) & ~Q(id=instance.id))
Мой вопрос, если если есть способ сделать это более непосредственно и избежать явный цикл здесь?
Спасибо за ваш ответ, я закончил с использованием необработанной команды SQL с помощью курсора, так как я не был осведомлен о '.extra () '. Постараюсь использовать это, его приятно, поскольку он возвращает набор запросов, как и любую другую фильтрацию. – yellowcap