当前位置: 首页 > 面试题库 >

Django与select_related的反向关系

孟翰藻
2023-03-14
问题内容

我有4个模型,我想检索它们之间的联接

型号A

class ModelA(models.Model):
    product = models.ForeignKey(ModelB)
    group = models.ForeignKey(Group)

型号B

class ModelB(models.Model):
    title = models.CharField()

型号C

class ModelC(models.Model):
    product = models.ForeignKey(ModelB)
    group = models.ForeignKey(ModelD)

型号

class ModelD(models.Model):
    name = models.CharField()

现在,我希望将所有 ModelA 对象与 ModelBModelCModelD结合在一起。
在sql中,这很容易做到。只是在表之间进行联接。使用Django ORM时,我会卡住,因为我只能做正向关系。

我在做这个

ModelA.objects.all().select_related(product)

但是我不能加入ModelC,我已经阅读了这篇文章,但是我不想遍历我的大清单,做一件简单的事情!而且我只想打一次数据库。

我使用的是Django的最新版本,希望我已经知道了解决方案。

谢谢你。


问题答案:

请参阅有关prefetch_related的文档。目前仅是开发人员,但将在Django 1.4中使用。如果您可以等待,或者可以在后备箱上运行。您将可以使用它。

同时,您可以尝试django-batch-select。本质上,它具有相同的目的。



 类似资料:
  • 问题内容: 有人可以告诉我反向关系是什么意思吗?我已经开始使用Django,并且在文档的很多地方都看到了“反向关系”。到底是什么意思?为什么有用?它与related_name有什么关系? 问题答案: 这是有关related_name的文档 假设你有2个模型 现在,你可以从配置文件对象执行操作。但是,如果要给配置文件对象指定对象,该怎么做?多数民众赞成在哪里或进来。 Django默认情况下为你提供一

  • 为了处理微服务体系结构,它经常与反向代理(如nginx或apache httpd)一起使用,对于交叉关注点的实现,使用API网关模式。有时反向代理做API网关的工作。 看到这两种方法之间的明确区别将是很好的。使用API网关的潜在好处是调用多个微服务并聚合结果。API网关的所有其他职责都可以使用反向代理实现。例如: 身份验证(可以使用nginx LUA脚本完成); 传输安全性。它本身反向代理任务;

  • 问题内容: 我有一个场地,这个场地上发生了很多事件。我的模型如下所示: 我想显示在某个场所发生的所有事件。我怎样才能做到这一点?我当前的视图如下所示: 问题答案: 您可以使用另一种方式。 请注意,是经理的对象,像,这样你就可以打电话,,和类似它来得到一个查询集。 请参阅Django文档

  • 问题内容: 我有一个场地,这个场地上发生了很多事件。我的模型如下所示: 我想显示在某个场所发生的所有事件。我怎样才能做到这一点?我当前的视图如下所示: 问题答案: 你可以使用另一种方式。 请注意,是经理的对象,像,这样你就可以打电话和类似它来得到一个查询集。

  • 本文向大家介绍django反向解析和正向解析的方式,包括了django反向解析和正向解析的方式的使用技巧和注意事项,需要的朋友参考一下 本文介绍了Django的正向解析和反向解析,分享给大家,具体如下: 先创建一个视图界面 urls.py   index.html   index页面加载的效果 正向解析 所谓正向解析就是直接在这里写地址 向urls.py里面一样 例如: test/p1/p2 反向

  • 我的Django项目中使用django-revproxy包进行反向代理,代理到我服务器上的SeqeunceServer服务。配置的路由是这样的: 运行之后,结果是可以访问“http://taascr.myddns.me:7253/”页面,但是我里面填写表单提交之后,就显示Page not found,看样子是把我的表单参数加到本地的“127.0.0.1:8000”地址后面了,请问该怎么解决呢? 我

  • Django演示了如何设置或覆盖在文档中使用外键的级联删除。 但是如果我们想让这种效果反过来呢?如果我们希望fk模型的删除导致该模型的删除,该怎么办? 谢谢

  • 问题内容: 我想在其中自动创建的ManyToMany联接表中存储一些其他信息。我将如何在Django中做到这一点? 就我而言,我有两个表:“雇员”和“项目”。我要存储的是每个项目中每个员工每小时工作所获得的收入,因为这些价值并不相同。那么,我该怎么做呢? 我想到的是,不是使用方法“ ManyToManyField”,而是显式创建了一个第三类/表来存储这些新信息,并使用“ ForeignKey”方法