Сортировка queryset django по заполнению поля m2m
Имеется следующая модель в django (есть еще множество полей, но сортировку необходимо делать по этому полю):
class Tag(models.Model):
"""Модель тегов для резюме (избранное и т.п.)"""
name = models.CharField("Тег", max_length=255)
def __str__(self):
return self.name
class Meta:
verbose_name = "Тэг"
verbose_name_plural = "Теги"
class Resume(models.Model):
...
tag = models.ManyToManyField(
"Tag",
verbose_name="Теги",
blank=True,
)
...
class Meta:
verbose_name = "Резюме (новое)"
verbose_name_plural = "Резюме (новые)"
ordering = ["updated_at", "area", "age"]
У некоторых экземпляров данной модели заполнено это отношением m2m. У кого-то есть один тег, у кого-то несколько. У некоторых моделей нет тегов вообще. Требуется получить queryset из всех экземпляров модели резюме, но чтобы он был отсортирован следующим образом: сначала идут те резюме, у которых есть теги (внутри этой группы сортировка не важна), потом идут все остальные экземпляры, отсортированные по условиям мета-класса. Пробовал делать так:
class Meta:
verbose_name = "Резюме (новое)"
verbose_name_plural = "Резюме (новые)"
ordering = ["tag__name", "updated_at", "area", "age"]
но таким образом в queryset попадает одно и то же резюме столько раз, сколько тегов ему присвоено. А требуется, чтобы в queryset были только уникальные объекты. Сам queryset получаю следующим образом:
Resume.objects.filter(recruiter=request.user)
.select_related("area", "area__parent_city", "source")
.prefetch_related(
"skill_set",
"driver_license_types",
"professional_roles",
"professional_roles__category",
"recruiter",
"recruiter__position_worker",
"recruiter__groups",
"tag",
)