我有三个类产品有很多描述,每个型号都有很多商店我想做什么
select all products but store.qty value > 0
我试过
pr = Product.objects.all().exclude(Product__Product_description__qty > 0)
我该怎么做?
class Product
id = models.AutoField(primary_key=True)
name = models.CharField(max_length=255)
class Product_description
id = models.AutoField(primary_key=True)
name = models.CharField(max_length=255)
product = models.ForeignKey(Product)
class Store
id = models.AutoField(primary_key=True)
name = models.CharField(max_length=255)
desc = models.ForeignKey(Product_description)
qty = models.IntegerField()
pr = Product.objects.filter(Product_description__qty__lte = 0)
或者,如果您真的必须使用exclude:
pr = Product.objects.exclude(Product_description__qty__gt = 0)
CCD_ 1在任何一种情况下都不是必需的;您最终只需要构建一个未触发的代理,然后再构建过滤器/排除查询集。它浪费内存和CPU,但除此之外什么都不做。只有.delete()
运算符需要一个可工作的all()
查询集,但这是一种特殊情况,专门设计用于避免数据集的意外破坏。
Django Queryset API文档非常易读。
Django的约定是将类命名为ProductDescription
。
这看起来像是一种倒退的等级制度。为什么商店会有"产品描述"?这不是产品本身的元数据吗?你关心的是商店有一定数量的产品吗?或者这些产品是变体,即你想找到商店至少有一个绿色、蓝色或橙色的所有产品?有件事告诉我,你的项目需要重新考虑。