django prefetch_与过滤器相关

标签 django django-orm

模型.py:

class Ingredient(models.Model):
    _est_param = None

    param = models.ManyToManyField(Establishment, blank=True, null=True, related_name='+', through='IngredientParam')

    def est_param(self, establishment):
        if not self._est_param:
            self._est_param, created = self.ingredientparam_set\
                .get_or_create(establishment=establishment)
        return self._est_param

class IngredientParam(models.Model):
    #ingredient params
    active = models.BooleanField(default=False)
    ingredient = models.ForeignKey(Ingredient)
    establishment = models.ForeignKey(Establishment)

我需要获取Establishment的所有带有参数的成分。首先,我获取 Ingredients.objects.all() 并使用 Ingredients.objects.all()[0].est_param(builtment).active 等所有参数。如何使用 django 1.4 prefetch_lated 来减少 sql 查询?也许我可以使用其他方式来存储Ingredient的各个Establishment属性?

最佳答案

Django 1.7 添加了 Prefetch您可以将其放入 prefetch_lated 中的对象。它允许您指定应提供过滤的查询集。目前,我在从列表中获取单个(最新)条目时遇到了一些问题,但在尝试获取所有相关条目时,它似乎工作得很好。

您还可以查看django-prefetch这是 this question 的一部分由于措辞截然不同,这似乎与这个问题并不重复。

关于django prefetch_与过滤器相关,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11073454/

相关文章:

Django:select_related和GenericRelation

django - 使用 create-react-app 自定义静态文件路径?

javascript - 如何在 django 模板中创建计时器 javascript 组件

django - 如何将图像绑定(bind)到 Django 中的编辑表单?

python - 获取文章->产品关系的最低价目表

mysql - Django 通用外键与自定义手动字段性能/优化

django - CheckboxSelectMultiple 的初始值

django - 无法理解何时在 Django 中评估 QuerySets

django - Django的ORM可以输出它正在使用的SQL查询吗?

python - Django ORM - 如何在具有多对多字段的两个条件下加入