django,SQL中忽略CharField的默认值

时间:2013-10-26 23:49:33

标签: django django-models

我已将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!'
);
  • python 2.7.3
  • django是1.5.4
  • 后端MySQL

为什么django模型创建者会忽略默认值?

谢谢!

1 个答案:

答案 0 :(得分:8)

该字段的默认值不在SQL模式中,因为Django的内部将处理它 - 而不是数据库。在保存模型对象之前,Django会注意为此字段设置默认值。

From the docs: “字段的默认值。这可以是值或可调用对象。如果可调用,则每次创建新对象时都会调用它。”

您可以将callable(函数)作为默认值,但这不能在SQL架构中表示。