django,SQL中忽略CharField的默认值

Ale*_*ban 2 django django-models

我已经定义了django虚拟模型如下:

class Test(models.Model):
    test = CharField(max_length = 100, default = 'Test!')
Run Code Online (Sandbox Code Playgroud)

它导致以下SQL

CREATE TABLE `uman_test` (
    `id` integer AUTO_INCREMENT NOT NULL PRIMARY KEY,
    `test` varchar(100) NOT NULL
);
Run Code Online (Sandbox Code Playgroud)

但我希望SQL中的默认值也是:

CREATE TABLE `uman_test` (
    `id` integer AUTO_INCREMENT NOT NULL PRIMARY KEY,
    `test` varchar(100) NOT NULL DEFAULT 'Test!'
);
Run Code Online (Sandbox Code Playgroud)
  • python 2.7.3
  • django是1.5.4
  • 后端MySQL

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

谢谢!

Lac*_*zar 8

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

从文档:"字段的默认值.这可以是值或可调用对象.如果可调用,则每次创建新对象时都会调用它."

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