Python Django原始sql或存储过程运行参数化视图?

Python Django原始sql或存储过程运行参数化视图?,python,django,django-models,Python,Django,Django Models,提前谢谢你的建议。我是Django的新手,创建了一个网站,其中包括人们可以投票的产品(比如“喜欢”)。我在产品详细信息页面的末尾展示了相关的喜欢的产品(即喜欢这个产品的人也喜欢这些产品) 我正在做的方法是一个链接表,它将产品ID与用户ID配对 要获取相关产品,需要在upvote表上进行反向查找。我的SQL代码可以很好地实现这一点,我可以在类函数中提供结果以获得相关产品的集合: def related_products(self, max_results=4): sql = f"\

提前谢谢你的建议。我是Django的新手,创建了一个网站,其中包括人们可以投票的产品(比如“喜欢”)。我在产品详细信息页面的末尾展示了相关的喜欢的产品(即喜欢这个产品的人也喜欢这些产品)

我正在做的方法是一个链接表,它将产品ID与用户ID配对

要获取相关产品,需要在upvote表上进行反向查找。我的SQL代码可以很好地实现这一点,我可以在类函数中提供结果以获得相关产品的集合:

def related_products(self, max_results=4):
  sql = f"\
            SELECT PRODUCT_ID AS ID\
            FROM PRODUCTS_UPVOTE\
            WHERE VOTER_ID IN ( \
                SELECT VOTER_ID\
                FROM PRODUCTS_UPVOTE\
                WHERE PRODUCT_ID = {product_id} \
                )\
            GROUP BY PRODUCT_ID\
            HAVING PRODUCT_ID != {product_id}\
            ORDER BY COUNT(PRODUCT_ID) DESC\
            FETCH FIRST {max_results} ROWS ONLY"
  return Product.objects.raw(sql)
这可以很好地工作,但在模型中这样放置SQL代码行“感觉”不对——使用存储过程肯定更好?但我看到许多网站对此发出警告。或者,也许有一种更好的方法来处理带有参数的运行视图,但我没有看到

对于Django中的此类需求,推荐的方法是什么

(如果有帮助,后端数据库是POSTGRES)