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')