有什么办法可以设置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;
答案 0 :(得分:1)
您可以使用默认值表达式中的任何函数,包括您自己的函数 - 只要它返回合适的数据类型即可。 The manual specifies:
DEFAULT
default_expr
DEFAULT
子句为其列中出现的列定义的列分配默认数据值。价值是任何 无变量表达式(子查询和对其他的交叉引用 不允许使用当前表中的列。的数据类型 默认表达式必须与列的数据类型匹配。
大胆强调我的
但是,您显示的功能是触发功能(RETURNS trigger
),不能用于此功能。
如果您的函数返回varchar
或任何其他可以强制转换为列类型的类型,则可以使用它。应该只是Django中的default=myfunc()
。它是DEFAULT myfunc()
SQL中的CREATE TABLE
。包括括号,在我的示例中为没有参数的函数清空。
答案 1 :(得分:0)