我是新来的Django和ORM的一般,所以有麻烦提出查询将加入多个表。Django - 加入多个表(模型),并根据它们的属性过滤掉
我有4种模式,需要加入 - Category
,SubCategory
,Product
和Packaging
,例如值是:
Category: 'male'
SubCategory: 'shoes'
Product: 'nikeXYZ'
Packaging: 'size_36: 1'
每个模型都有上述模型的FK(即。 SubCategory
有字段category
等)。
我的问题是 - 我怎么可以过滤Product
给予Category
(例如男性)和只显示其有Packaging
属性available
设置为True
产品?很明显,我想尽量减少我的数据库上的命中(理想情况下用1个SQL查询)。
我可以做一些沿着这些路线:
available = Product.objects.filter(packaging__available=True)
subcategories = SubCategory.objects.filter(category_id=<id_of_male>)
products = available.filter(subcategory_id__in=subcategories)
但随后需要在数据库中2分的命中至少(available
,subcategories
)我想。有办法一次完成吗?
什么是这样的: Product.objects.filter(packaging__available =真,subcategories__category_id__in = [id_of_male]) - 这是未经测试,但我认为,子类别应该是复数(related_name)。 –