4

我正在尝试实现 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)

我注意到问题在于 djangocursor.execute通过分别传递 SQL 语句和参数来执行的方式,从而导致default关键字被引号包围。

我正在尝试找到一种无需重写 postgres 后端即可解决此问题的方法

非常感谢帮助

4

1 回答 1

1

参考

from psycopg2.extensions import AsIs 

def get_db_prep_save(self, value, connection):
    return AsIs('default')

应该这样做。

于 2017-09-01T09:59:30.043 回答