微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 Elixir Ecto 中预加载的 Python Django 等价物

如何解决在 Elixir Ecto 中预加载的 Python Django 等价物

所以我来自 Elixir 和 Phoenix 背景,现在在 Django 项目中工作。

现阶段我正在研究 Django 的 ORM 部分,我有以下问题

假设一个模型如下

EnglishAdmin

此时在 Ecto 中,您可以执行以下操作

class Shop(models.Model):
    name = models.TextField()

class Product(models.Model):
    name = models.TextField()
    shop = models.ForeignKey(Shop)

结果是

shop = Context.get_by_id(1)
shop = preload(shop,:products)

处理幕后所有必要的连接查询,在使用 Django 时是否有类似的功能

解决方法

您应该可以在 select_related 中使用 prefetch_relatedquerysets 来做到这一点

在您的情况下,您可以:

shop = Shop.objects.select_related('products').get(id=5)

shops = Shop.objects.prefetch_related('products').all()

在文档中执行查询时,select_relatedprefetch_related 之间存在差异。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。