我有 3 个模型
模型.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,我的第一种方法是这样的:
视图.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}} 我只有翻译我要求的语言(章节相同)?