我正在运行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 - 为Django DateField和Postgresql指定默认值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36846824/

10-11 05:00
查看更多