我需要使用Django .objects.raw函数获取原始对象,例如:
SELECT * FROM TEST_APP_DOCUMENT WHERE DATE BETWEEN to_date('0000-02-07','YYYY-MM-DD') AND to_date('2027-02-15', 'YYYY-MM-DD')
在pgAdmin select中返回良好的结果,但是当我将其放入django时出现错误:
File "C:\Users\User\Desktop\test_task\test_app\views.py", line 110
queryset = Document.objects.raw('SELECT * FROM TEST_APP_DOCUMENT WHERE DATE BETWEEN to_date('0000 - 02 - 07','YYYY - MM - DD') AND to_date('2027 - 02 - 15', 'YYYY - MM - DD')')
^
SyntaxError: invalid syntax
语法问题是什么?
答案 0 :(得分:1)
您正在传递带有单括号('
)的字符串文字,同时将其包含在字符串本身中。您必须转义它们或使用"
:
queryset = Document.objects.raw("SELECT * FROM TEST_APP_DOCUMENT WHERE DATE BETWEEN to_date('0000 - 02 - 07','YYYY - MM - DD') AND to_date('2027 - 02 - 15', 'YYYY - MM - DD')")
您可以按期望使用反斜杠进行转义。例如,'foo\'bar'
将产生foo'bar
。