2013-10-26 27 views
2
忽略

我定义Django的假人模型如下:Django的,CharField默认值在SQL

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的模型创造者忽略的默认值?

谢谢!

+0

http://stackoverflow.com/questions/6153482/django-models-default-value-for-column – kgu87

回答

7

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

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

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

+0

谢谢你Lucho!这非常有帮助! :) 是的,我阅读了文档(您提到过),但我对这个“可调用”的评论感到困惑。我认为如果我提供const值,那么它应该被纳入SQL。 –