Модель 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')

должен сделать это.

Другие вопросы по тегам