我正在处理现有项目,其中已为模型类定义了自定义管理器。此Manager向查询添加一些其他查询/连接。例如,使用pk对模型进行简单的get查询包括检查地址。
我无法运行简单查询,因为这会使地址表与某些逻辑连接,如果地址不匹配,则不会返回记录。
business = Business.objects.get(pk=id)
我可以以某种方式绕过此自定义管理器并执行简单的Select * from business where id=id
查询吗?
答案 0 :(得分:1)
首先,您可以采取两种方式。 Raw sql
business = Business.objects.raw("Select * from business where id={0}".format(pk))
或者如果您想要调用您的经理超级类,假设您的自定义管理器被称为BusinessManager
business = super(BusinessManager, Business.objects).get(pk=id)
但是作为good practice,您永远不应该覆盖正常的objects
属性,应该保持原样。
答案 1 :(得分:0)
您可以在不使用django ORM的情况下编写RAW SQL查询。只需安装一个库就可以直接在数据库上执行SQL查询。
您也可以尝试在Django中编写Raw SQL,但它可能无法解决您的问题:https://docs.djangoproject.com/en/1.6/topics/db/sql/
编辑:好吧我似乎错了,它实际上可以解决你的问题:https://docs.djangoproject.com/en/1.6/topics/db/sql/#executing-custom-sql-directly