Django: упорядочение по заданным свойствам - PullRequest
0 голосов
/ 20 февраля 2012

У меня есть две модели:

class Video(models.Model):
    slug = models.SlugField(blank=True, default='', db_index=True, unique=True)


class VideoTranslation(models.Model):
    video = models.ForeignKey(Video, related_name='translations')
    language = models.CharField(max_length=3, choices=settings.LANGUAGES)
    name = models.CharField(max_length=255, db_index=True)

Видео содержит некоторую информацию о видео, Перевод видео содержит переведенные названия этих видео.

Я хочу получить его из модели Видео на одном из языков.

Это возможно по SQL-запросу, как это:

SELECT * FROM video_video IN join video_videotranslation ON video_video.id = video_videotranslation.video_id where video_videotranslation.language="en" ORDER BY video_videotranslation.name;

но я действительно хочу избегать необработанных SQL-запросов.

Можно ли сделать такой запрос, опираясь только на Django ORM?

Ответы [ 2 ]

1 голос
/ 20 февраля 2012
Video.objects.filter(translations__language__iexact='en').order_by('translations__name')
1 голос
/ 20 февраля 2012

Абсолютно, это будет выглядеть следующим образом:

Video.objects.filter(translations__language='en').order_by('translations__name')

См. поиск, который охватывает отношения для синтаксиса, и документацию order_by .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...