我想执行预取。关键是:我有一个 baseModel 和继承的模型,这些模型与其他模型一样。但是我的 baseModel 没有与它们链接。这是伪代码:
class Author(models.Model):
name = models.CharField()
class Movie(PolymorphicModel):
title = models.CharField()
author = models.ForeignKey('Author')
class EnglishMovie(Movie):
pass
class FrenchMovie(Movie):
pass
class Subtitle(models.Model):
movie = models.ForeignKey('FrenchMovie', related_name='subtitle')
text = models.CharField()
如您所见,FrenchMovie 与字幕相关联,但 EnglishMovie 没有。我想预取我所有的电影,并预取字幕。我尝试了几种方法:
def get_queryset(self):
return Movie.objects.prefetch_related('author', 'subtitle').all()
我得到:ValueError:无法查询“EnglishMovie 对象(1)”:必须是“FrenchMovie”实例。
def get_queryset(self):
q1 = Movie.objects.prefetch_related('author').all()
q2 = FrenchMovie.objects.prefetch_related('subtitle').all()
return q1 | q2
我得到:AssertionError:无法在两个不同的基本模型上组合查询。
有小费吗 ?非常感谢。