问题描述
所以我来自 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_related
或 querysets
来做到这一点
在您的情况下,您可以:
shop = Shop.objects.select_related('products').get(id=5)
或
shops = Shop.objects.prefetch_related('products').all()
在文档中执行查询时,select_related
和 prefetch_related
之间存在差异。