2016-04-25 6 views
1

Ich verwende Django 1.9.5 und PostgreSQL 9.5. Das Modell für meine app ist:Angeben eines Standardwerts für Django DateField und Postgresql

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) 

Die Migrationsdatei zeigt:

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

sqlmigrate zeigt:

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; 

Wenn ich wandern laufen, gibt es keine Fehler und die Tabelle wird erstellt ohne irgendeinen Standardwert. Dies ist in SQL trivial. Von einem PostgreSQL-Tabellenskript erstellen:

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

Ich bin über die Verwendung Django dafür bürgen versucht, aber ich würde wirklich um herauszufinden, wie, wie der Rahmen, so viel wie möglich zu nutzen.

Wie kann ich einen Standardwert festlegen, der ein festgelegter Wert ist (d. H. Nicht von etwas wie default=datetime.now abgeleitet)?

Antwort

3

Django setzt keine Standardwerte in der Datenbank. Es wird gerne, was Wert, den Sie es als Standard geben verwenden, obwohl, so ist es durchaus möglich, ein statisches Datum weitergeben müssen:

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

Wenn ich zu verstehen, was Sie sagen, werde ich nicht mit Django bekommen, was Ich bekomme mit dem rohen SQL-Skript. Durch Verwendung des Frameworks (d. H. Der Modelle) zum Hinzufügen von Werten zur Datenbank wird Django jedoch dafür sorgen, dass der Standarddatumswert von 2015-01-01 immer dann enthalten ist, wenn ich einen neuen Datensatz zur Datenbank hinzufüge. Habe ich das richtig? – 5280Angel

+0

Ja, das ist richtig. –

Verwandte Themen