【发布时间】:2014-04-26 16:24:01
【问题描述】:
我有 3 个模型
models.py
class Book(models.Model):
name = models.CharField(max_length=255, primary_key=True)
...
class BookTranslation(models.Model):
book = models.ForeignKey(Book, related_name='translations')
language = models.CharField(max_length=2, choices=LANGUAGE_CHOICES)
...
class Chapter(models.Model):
book_translation=models.ForeignKey(BookTranslation,related_name='chapters')
...
我想用一种语言为一本书创建一个 DetailView,我的第一种方法是这样的:
views.py
class BookDetail(DetailView):
model = Book
def get_object(self):
return self.model.objects.select_related('translations').prefetch_related('translations__chapters').get(slug=self.kwargs['slug'], translations__language=self.kwargs['language'])
但是这样我会返回所有相关的 BookTranslations 和章节,而不仅仅是我想要的语言...
是否可以过滤 select_related 以便在我的模板中,在 {{book.translations}} 我只有我要求的语言的翻译(章节相同)?
【问题讨论】:
标签: python django django-queryset django-select-related django-multilingual