Django выбирает из нескольких моделей

Какой лучший способ выбрать данные из нескольких моделей?

Например

class User(models.Model):
    ...

class UserFeature1(models.Model):
    user = models.ForeignKey(User)
    ...

class UserFeature2(models.Model):
    user = models.ForeignKey(User)
    ...

...

class UserFeature30(models.Model):
    user = models.ForeignKey(User)
    ...

Если у вас 30 таблиц с внешним ключом к таблице User, будет трудно написать 30 запросов select_related, поскольку User не является моделью, в которой хранится внешний ключ. Причина в том, что это отношение "один ко многим", один пользователь может иметь несколько функций каждый.

Даже написать необработанный SQL запрос сложно с таким количеством моделей.

Какой метод является наиболее чистым? И какой метод является наиболее производительным? С учетом вызова их из шаблона.

Спасибо

Вы можете принудительно выбрать select_related с помощью переопределения QueryManager. Вы можете прочитать этот вопрос

class MyManager(models.Manager):
    def get_queryset(self):
        return super(MyManager, self).get_queryset().select_related('foo', 'bar')
Вернуться на верх