Объедините запросы от 2 унаследованных моделей Django - PullRequest
0 голосов
/ 13 марта 2019

Я хотел бы выполнить предварительную выборку.Дело в том, что у меня есть baseModel и унаследованные модели, которые нравятся другим моделям.Но моя базовая модель не связана с ними.Вот код speudo:

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: Не удается объединить запросы для двух разных базовых моделей.

Есть какие-нибудь советы?Большое спасибо.

...