Предоставление различных связанных имен для внешнего ключа для дочерних элементов при многостороннем наследовании в django

У меня есть эти модели:

class Theme(models.Model):
   name = models.charfield()
class Product(models.Model):
    theme = models.ForeignKey(Theme)
class PhysicalProduct(Product)
class Course(Product):
    ........
class Book(Product):
   ........

и я хочу получить только курсы и книги, связанные с определенной темой, с помощью метода prefetch_related, но проблема в том, что я не думаю, что есть способ сделать это, кроме как добавить поле темы к каждому дочернему элементу модели Product и дать каждому из них специфически связанное имя:

class Theme(models.Model):
   name = models.charfield()
class Product(models.Model):
    .......
class PhysicalProduct(Product):
   theme = models.ForeignKey(Theme, related_name = 'physical_products')
class Course(Product):
    theme = models.ForeignKey(Theme, related_name = 'courses')
    ........
class Book(Product):
   theme = models.ForeignKey(Theme, realted_name = 'books')
   ........

есть ли способ сохранить поле theme в модели Product и иметь возможность различать определенные типы продуктов, которые я хочу получать только с помощью prefetch_related

Вернуться на верх