例如我有这样的代码
class Product(models.Model):
...
@property
def review_count(self):
return Review.objects.filter(order__product_id=self.id, published=True).count
class Order(models.Model):
product = models.ForeignKey(Product)
class Review(models.Model):
order = models.ForeignKey(Order)
published = models.BooleanField(default=False)
我经常需要显示每个产品的评论数量。 我找到了办法 -
我认为,如果我有额外的'产品'与fk到产品评论模型,我将可以轻松,快速地获得产品集,但在这种情况下,字段'产品'将取决于字段'订单' ,我觉得,这对正常化不利。
P.S。:一个订单可能有几个评论 - 没关系。和审查相关的订单检查一个订单没有太多审查 - 审核问题。
请帮助我,如何改进此计划,以便更快,更轻松地对产品进行审核
答案 0 :(得分:1)
我不知道为什么你说你不能使用annotate()
方法,因为你需要过滤。这不仅受支持,而且在文档中explicitly described。
Product.objects.filter(order__review__is_published=True).annotate(Count('order__review'))