django - 多对多以及如何从查询集中获取查询集

标签 django django-queryset

我有以下型号:

class Product(models.Model):
    name = CharField(max_length=30)

class Store(models.Model):
    name = CharField(max_length=30)
    product = models.ManyToManyField(Product)

如何获取产品名为 product_nameStore 以及所有产品(除了名为 product_name 的产品)?是否可以在一个查询中完成它? 在原始 SQL 中,这将是简单的JOIN。不知道如何通过 Django 实现它。

最佳答案

由于 Django 具有惰性查询集评估功能,您实际上可以使用 Django 执行这些操作。 Django 的 in 字段查找接受列表和查询集。以下将创建一个嵌套的 SQL 代码:

products = Product.objects.filter(store_set__in=stores_qs)
stores_qs = Store.objects.filter(product__name='product_name')

Here是 Django in 文档。

关于django - 多对多以及如何从查询集中获取查询集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14916642/

相关文章:

Django Rest Framework 奇怪错误无法导入名称 SkipError

django - 缩小 Django 表单中的选择范围

python - 如何在 Django 中设置 html 登录页面的用户名和密码?

django - 通过使用 redis 列表进行过滤来控制 Django 查询集结果的排序

django - 在不指定查找的情况下调用 prefetch_lated() 有用吗?

django - 在 Django 中突出显示搜索到的文本

python - 我如何在 Django 中定义 3 个以上模型之间的多对多关系?

python - Django 中不区分大小写的查询集排序

python - Django ORM - .update(…) 带有 extra(…) 和 F(…)

python - Django,在对象循环中获取相关对象