【发布时间】:2020-12-09 21:22:04
【问题描述】:
我正在使用带有 Postgres 的 Django。
我有一个名为 Product 的对象和另一个名为 UserProfile 的对象。当用户喜欢某个产品时,该产品会记录在 UserProfile 的字段中,如下所示:
watchedProducts = models.ManyToManyField('Product', related_name='user_where_watched', blank=True)
现在我要做的是查询产品表并按喜欢的数量订购产品。
我所拥有的(它不起作用)是:
products = Product.objects.filter(fullSearchCondition).distinct().annotate(numOfLikes=RawSQL('SELECT COUNT(id) FROM "myapp_userprofile_watchedProducts" WHERE "product_id"=%s',(F('id'),))).order_by("numOfLikes")
我没有得到的是如何将产品 ID 注入到查询中。
我还研究了 Django 的自定义表达式函数,但对我来说它看起来更复杂。
有人可以告诉我这样做的好方法吗?
【问题讨论】:
标签: python sql django postgresql