我已将django虚拟模型定义如下:
class Test(models.Model):
test = CharField(max_length = 100, default = 'Test!')
它导致以下SQL
CREATE TABLE `uman_test` (
`id` integer AUTO_INCREMENT NOT NULL PRIMARY KEY,
`test` varchar(100) NOT NULL
);
但我希望SQL中的默认值也是:
CREATE TABLE `uman_test` (
`id` integer AUTO_INCREMENT NOT NULL PRIMARY KEY,
`test` varchar(100) NOT NULL DEFAULT 'Test!'
);
为什么django模型创建者会忽略默认值?
谢谢!
答案 0 :(得分:8)
该字段的默认值不在SQL模式中,因为Django的内部将处理它 - 而不是数据库。在保存模型对象之前,Django会注意为此字段设置默认值。
From the docs: “字段的默认值。这可以是值或可调用对象。如果可调用,则每次创建新对象时都会调用它。”
您可以将callable(函数)作为默认值,但这不能在SQL架构中表示。