Модель Django с настраиваемым полем, которое использует базу данных по умолчанию
Я пытаюсь реализовать подкласс IntegerField, чтобы использовать метод по умолчанию в моей базе данных Postgres, а не метод по умолчанию в django (я знаю, что это горячая тема). Для этого я изменил следующий метод в моем настраиваемом поле
def get_db_prep_save(self, value, connection):
return 'default'
Однако когда django выполняет инструкцию SQL, это выглядит примерно так:
INSERT INTO my_table ('default_column') VALUES ('default')
Вставка не удалась, потому что default
Ключевое слово заключено в кавычки. Следующий оператор SQL работает:
INSERT INTO my_table ('default_column') VALUES (default)
Я заметил, что проблема в том, как django выполняет cursor.execute
передавая оператор SQL и параметры отдельно, вызывая тем самым default
ключевое слово в кавычках.
Я пытаюсь найти способ решить эту проблему, не переписывая серверную часть postgres.
Помощь очень ценится
1 ответ
from psycopg2.extensions import AsIs
def get_db_prep_save(self, value, connection):
return AsIs('default')
должен сделать это.