2016-04-25 19 views
1

私はDjango 1.9.5とPostgreSQL 9.5を実行しています。私のアプリのためのモデルは次のとおりです。Django DateFieldとPostgreSQLのデフォルト値の指定

... 
('userStartEmployment', models.DateField(default='2015-01-01')), 
... 

sqlmigrateを示しています:

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) 

移行ファイルが表示さ

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; 

私が移行実行すると、エラーがないとテーブルが作成されますデフォルト値なし。これはSQLで行うのが簡単です。 PostgreSQLのテーブルからスクリプトを作成します。

"userStartEmployment" date DEFAULT '2015-01-01'::date, 

を、私はこのためにはDjangoを使用して救済する誘惑んだけど、私は本当に同じくらい私ができるようにフレームワークを活用する方法を見つけ出すしたいと思います。

デフォルト値を設定値(つまり、default=datetime.nowなどから派生した値)に設定するにはどうすればよいですか?

答えて

3

Djangoはデータベースにデフォルトを設定しません。私はあなたが何を言っているか理解していた場合

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

、私は何ジャンゴで得ることはありません:それは喜んでそれが静的な日付を渡すことは完全に可能であるので、しかし、あなたがデフォルトとしてそれを与えるどのような値を使用します私は生のSQLスクリプトを取得します。しかし、フレームワーク(モデル)を使ってデータベースに値を追加することで、Djangoはデータベースに新しいレコードを追加するたびに '2015-01-01 'というデフォルトの日付値を表示します。私はその権利を持っていますか? – 5280Angel

+0

はい、そうです。 –

関連する問題