В Django удалите дубликаты QuerySet при использовании парлера
У меня есть такая модель:
from django.db import models
from django.utils.translation import ugettext_lazy as _
from parler.models import TranslatableModel, TranslatedFields
...
class UnitNode(TranslatableModel):
...
translations = TranslatedFields(
title=models.CharField(_(u'title'), max_length=1024),
slug=models.SlugField(_('slug'))
),
)
...
Я хочу QuerySet UnitNode без дубликатов, отсортированных по слаг. Когда я запрашиваю что-то вроде этого:
qs = UnitNode.objects.distinct().order_by("translations__slug")
Я получаю дубликаты.
Как мне избавиться от дубликатов?
1 ответ
Решение:
from django.utils.translation import get_language
Country.objects.translated(get_language()).order_by("translations__name")
Таким образом, вы получаете только экземпляры для текущего языка, используемого в приложении, и оно не будет генерировать дубликаты. Точно так же, как вы это делали, он получает все экземпляры всех языков, дублируя себя на разных языках.