gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 07:40:42 25 4
gpt4 key购买 nike

所以我来自 Elixir 和 Phoenix 背景,现在在 Django 项目中工作。
在这个阶段,我正在调查 Django 的 ORM 部分,我有以下问题
假设一个模型如下

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

class Product(models.Model):
name = models.TextField()
shop = models.ForeignKey(Shop)
此时在 Ecto 中,您可以执行以下操作
shop = Context.get_by_id(1)
shop = preload(shop, :products)
结果是
%Shop{
name: "Some name",
products: [
%Product{},
%Product{}
]
}
处理幕后所有必要的连接查询,在使用 Django 时是否有类似的功能?

最佳答案

你应该可以用 select_related 来做或 prefetch_related querysets
在你的情况下,你可以这样做:

shop = Shop.objects.select_related('products').get(id=5)
或者
shops = Shop.objects.prefetch_related('products').all()
select_related之间有区别和 prefetch_related当它在文档中执行查询时。

关于在 Elixir Ecto 中预加载的 Python Django 等价物,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67483128/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com