我想执行预取。关键是:我有一个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 object(1)”:必须是“ FrenchMovie”实例。
def get_queryset(self):
q1 = Movie.objects.prefetch_related('author').all()
q2 = FrenchMovie.objects.prefetch_related('subtitle').all()
return q1 | q2
我得到: AssertionError:无法在两个不同的基本模型上组合查询。
任何提示?非常感谢。