我有以下型号:
class Product(models.Model):
name = CharField(max_length=30)
class Store(models.Model):
name = CharField(max_length=30)
product = models.ManyToManyField(Product)
如何获取产品名为 product_name
的 Store
以及所有产品(除了名为 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/