Python Django原始sql或存储过程运行参数化视图?
提前谢谢你的建议。我是Django的新手,创建了一个网站,其中包括人们可以投票的产品(比如“喜欢”)。我在产品详细信息页面的末尾展示了相关的喜欢的产品(即喜欢这个产品的人也喜欢这些产品) 我正在做的方法是一个链接表,它将产品ID与用户ID配对 要获取相关产品,需要在upvote表上进行反向查找。我的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"\
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)