为Django DateField和Postgresql指定默认值

为Django DateField和Postgresql指定默认值,django,postgresql,date,default,Django,Postgresql,Date,Default,我正在运行Django 1.9.5和PostgreSQL 9.5。我的应用程序的型号是: from django.db import models class users(models.Model): userId = models.AutoField(primary_key=True) userUserKey = models.CharField(max_length=255) userUserName = models.CharField(max_length=25

我正在运行Django 1.9.5和PostgreSQL 9.5。我的应用程序的型号是:

from django.db import models

class users(models.Model):
    userId = models.AutoField(primary_key=True)
    userUserKey = models.CharField(max_length=255)
    userUserName = models.CharField(max_length=255)
    userLastName = models.CharField(max_length=255)
    userFirstName = models.CharField(max_length=255)
    userActive = models.IntegerField()
    userStartEmployment = models.DateField(default='2015-01-01")
    userEndEmployment = models.DateField(null=True)
迁移文件显示:

...
('userStartEmployment', models.DateField(default='2015-01-01')),
...
sqlmigrate显示:

BEGIN;
--
-- Create model users
--
CREATE TABLE "login_users" (
    "userId" serial NOT NULL PRIMARY KEY, 
    "userUserKey" varchar(255) NOT NULL, 
    "userUserName" varchar(255) NOT NULL, 
    "userLastName" varchar(255) NOT NULL, 
    "userFirstName" varchar(255) NOT NULL, 
    "userActive" integer NOT NULL, 
    "userStartEmployment" date NOT NULL, 
    "userEndEmployment" date NULL);
COMMIT;
当我运行migrate时,没有错误,并且创建的表没有任何默认值。这在SQL中很容易做到。从PostgreSQL创建表脚本:

"userStartEmployment" date DEFAULT '2015-01-01'::date,
我很想放弃使用Django来实现这一点,但我真的很想弄清楚如何尽可能多地利用这个框架


我如何设置一个默认值作为一个设置值(即不是从像
default=datetime.now
这样的东西派生出来的)?

Django从不在数据库中设置默认值。不过,它很乐意使用您给定的任何值作为默认值,因此完全可以传递静态日期:

userStartEmployment = models.DateField(default=datetime.date(2015,1,1))

如果我理解了您的意思,那么Django就不会像原始SQL脚本那样。但是,通过使用框架(即模型)向数据库中添加值,Django将确保在我向数据库中添加新记录时,默认日期值
'2015-01-01'
。我有这个权利吗?