具有使用数据库默认值的自定义字段的Django模型

时间:2015-12-17 10:22:00

标签: sql django postgresql django-custom-field

我正在尝试实现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通过单独传递SQL语句和参数来执行cursor.execute的方式,从而导致default关键字被引号括起来。

我试图找到一种解决方法,而无需重新编写postgres后端

非常感谢帮助

1 个答案:

答案 0 :(得分:0)

Reference

from psycopg2.extensions import AsIs 

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

应该这样做。