2

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

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

谢谢!

4

1 回答 1

8

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

来自文档:“该字段的默认值。这可以是一个值或可调用对象。如果可调用,它将在每次创建新对象时调用。”

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

于 2013-10-27T00:05:29.197 回答