sun*_*hit 11 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)
Run Code Online (Sandbox Code Playgroud)
如何获得Store
带有名称的产品,product_name
并获得所有产品(名称产品除外product_name
)?是否可以在一个查询中进行?在原始SQL中,它很简单JOIN
.不知道如何通过Django实现它.
mik*_*725 21
你可以用Django实际做这些事情,因为它是懒惰的查询集评估.Django的in
字段查找接受列表和查询集.以下将创建嵌套的SQL代码:
products = Product.objects.filter(store_set__in=stores_qs)
stores_qs = Store.objects.filter(product__name='product_name')
Run Code Online (Sandbox Code Playgroud)
这是Django in
文档.
您应该能够根据Product的属性过滤存储,然后prefetch_related检索到的对象.
Store.objects.filter(product__name="product_name").prefetch_related('product')
Run Code Online (Sandbox Code Playgroud)
这应该以最少的时间命中数据库以达到你想要的 - 两次.
可在此处找到更多文档.
归档时间: |
|
查看次数: |
22234 次 |
最近记录: |