我有两种模式:
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?
答案 0 :(得分:1)
当然,它看起来像:
Video.objects.filter(translations__language='en').order_by('translations__name')
请参阅lookups that span relationships了解语法和documentation of order_by。
答案 1 :(得分:1)
Video.objects.filter(translations__language__iexact='en').order_by('translations__name')