合并来自2个继承的Django模型的查询

时间:2019-03-13 09:46:18

标签: django django-queryset django-polymorphic

我想执行预取。关键是:我有一个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:无法在两个不同的基本模型上组合查询。

任何提示?非常感谢。

0 个答案:

没有答案