【发布时间】:2016-02-05 16:39:48
【问题描述】:
下面给出的是零售店的模型。
class Rack(models.Model):
name = models.CharField(max_length=128)
number = models.PositiveSmallIntegerField()
categories = models.ManyToManyField(Category)
class Category(models.Model):
name = models.CharField(max_length=128)
code = models.CharField(max_length=3)
class Product(models.Model):
title = models.CharField(max_length=255)
in_stock = models.BooleanField(default=False)
categories = models.ManyToManyField(Category)
机架:存放产品的机架。 类别:产品的类别。 产品:产品
一个机架可以有多个类别,同一类别可以在多个机架上。 为了便于管理,我更喜欢在管理员的机架上选择类别,所以更喜欢这种设计。
如果给定一个货架,比如说No.1,我如何查询给定货架上的产品?
>> Rack.objects.get(number=1).categories.all()
[<Category: Fruits>, <Category: Vegetables>]
我不想迭代这个查询集,而是进行查询以返回对象。
我的问题是,我如何查询机架上的对象尽可能优化?
因此查询必须返回对象列表。
>> Rack.objects.filter( * code here to get the objects in the rack 1 * ) must returns the objects on the rack 1
[<Product: Apple>, <Product: Orange>, <Product: Cucumber>, <Product: Carrot>, <Product: Green Chillie>, <Product: Onion>, <Product: Grapes> ]
谢谢
【问题讨论】:
-
@AronYsidoro 别担心,这不是重复的,这两个问题都在
ManyToManyField上,而我的问题与through无关。
标签: python django django-queryset django-orm manytomanyfield