В 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")

Таким образом, вы получаете только экземпляры для текущего языка, используемого в приложении, и оно не будет генерировать дубликаты. Точно так же, как вы это делали, он получает все экземпляры всех языков, дублируя себя на разных языках.

Другие вопросы по тегам