【问题标题】:Django select from multiple modelsDjango 从多个模型中选择
【发布时间】:2021-12-24 01:09:18
【问题描述】:

从多个模型中选择数据的最佳方法是什么?

例如

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 不是拥有外键的模型。原因是它是一对多的关系,1 个用户每个可以有多个功能。

使用如此多的模型,即使编写原始 SQL 查询也很困难。

最干净的使用方法是什么?什么是最高效的方法?考虑到从模板中调用它们。

谢谢

【问题讨论】:

  • 一个想法是分别做每个查询,然后做一个联合。

标签: django django-models django-views django-templates django-queryset


【解决方案1】:

您可以通过覆盖 QueryManager 强制选择相关。 you can read this question

class MyManager(models.Manager):
    def get_queryset(self):
        return super(MyManager, self).get_queryset().select_related('foo', 'bar')

【讨论】:

  • 对不起,我通读了,但我不明白。我的例子,User 不能做 select_related 因为它没有外键。例如1 个用户 -> 许多 UserFeature1
  • 你能写一个原始的 SQL 来获取你的查询集吗?
  • 我只是想看看你的SQL来了解你的需求
猜你喜欢
  • 2021-04-08
  • 1970-01-01
  • 2015-02-10
  • 1970-01-01
  • 2011-07-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-12
相关资源
最近更新 更多