django从数据库存储过程中获取默认值

时间:2013-03-17 17:41:21

标签: database django postgresql

有什么办法可以设置django模型的自动字段ID来从中选择它的值 数据库程序。例如:

class Service(models.Model):

id = models.CharField(max_length=50, primary_key=True, default=database_procedure)
name = models.CharField(max_length=50)
icon = models.CharField(max_length=150, default='iconset-info.png')
description = models.TextField()

和数据库程序类似:

CREATE FUNCTION database_procedure() RETURNS trigger AS $database_procedure$
    BEGIN
       [...]
    END;
$database_procedure$ LANGUAGE plpgsql;

2 个答案:

答案 0 :(得分:1)

您可以使用默认值表达式中的任何函数,包括您自己的函数 - 只要它返回合适的数据类型即可。 The manual specifies

  

DEFAULT default_expr

     

DEFAULT子句为其列中出现的列定义的列分配默认数据值。价值是任何   无变量表达式(子查询和对其他的交叉引用   不允许使用当前表中的列。的数据类型   默认表达式必须与列的数据类型匹配

大胆强调我的 但是,您显示的功能是触发功能(RETURNS trigger),不能用于此功能。

如果您的函数返回varchar或任何其他可以强制转换为列类型的类型,则可以使用它。应该只是Django中的default=myfunc()。它是DEFAULT myfunc() SQL中的CREATE TABLE。包括括号,在我的示例中为没有参数的函数清空。

答案 1 :(得分:0)

为什么不按你的意愿使用?

Default值可能是可调用对象。因此,在函数中,您可以转向数据库并执行某些操作。

signals也可能对您有所帮助。