【发布时间】:2021-11-04 15:28:27
【问题描述】:
我有两张桌子。 餐桌产品
id | name |
餐桌折扣
id | product_id | is_deleted
两个模型是:
class Product(models.Model):
name = models.CharField(max_length=10)
class Discount(models.Modle):
product = models.ForeignKey(Product, on_delete=models.CASCADE)
is_deleted = models.BooleanField(default=True)
product_id是产品表id的外键,is_deleted是一个布尔字段。
如何仅使用 is_deleted 折扣过滤所有产品?请注意,这两个表可能很大,因此 .exclude() 不适合这种情况。
【问题讨论】:
-
你能分享你的Django模型吗?
-
如果
Product有两个(或更多)折扣,并且其中只有一个将is_deleted设置为True,那么应该排除还是保留? -
@WillemVanOnsem 添加型号代码。产品和折扣之间没有限制。一种产品可以有多个折扣,这些折扣可以是 is_deleted 也可以不是。我只需要在 is_deleted 设置为 true 的情况下过滤掉所有产品。
-
那么如果一个产品有两个折扣,一个
is_deleted设置为True,一个设置为False,查询集是包含那个产品,还是排除那个产品? -
此外,另一个悬而未决的问题是如何处理根本没有任何折扣的
Products。
标签: django postgresql django-queryset