2017-05-16 1 views
0

J'ai app django, et je veux avoir des données initiales pour les champs de dateDjango méthode get_initial avec quelques champs

promoted_from = models.DateTimeField(blank=True, null=True) 
promoted_to = models.DateTimeField(blank=True, null=True) 

J'ai besoin 00h00 dans le champ de temps.

Dans cette application, j'ai méthode get_initial:

def get_initial(self): 
    initial = super(BasePostEdit, self).get_initial() 
    get = self.request.GET 
    initial.update(get) 
    if initial.get("pub_date", None): 
     initial["pub_date"] = datetime.strptime(initial["pub_date"][0], "%d/%m/%Y") 

    return initial 

Mais je veux avoir aussi deux autres domaines promoted_from et promoted_to. J'ai essayé de cette façon, sans succès:

def get_initial(self): 
    initial = super(BasePostEdit, self).get_initial() 
    get = self.request.GET 
    initial.update(get) 
    if initial.get("pub_date", None): 
     initial["pub_date"] = datetime.strptime(initial["pub_date"][0], "%d/%m/%Y") 

    if initial.get("promoted_from", None): 
     initial["promoted_from"] = datetime.strptime(initial["promoted_from"][0], "%d/%m/%Y") 

    return initial 

S'il vous plaît pour de l'aide/un indice.

Répondre

0

Vous n'avez pas besoin de faire cela. Vous pouvez simplement définir un défaut sur les champs eux-mêmes:

promoted_from = models.DateTimeField(blank=True, null=True, default=datetime.datetime.now) 
promoted_to = models.DateTimeField(blank=True, null=True, default=datetime.datetime.now) 

Modifier

Si vous avez besoin de personnaliser la valeur, utilisez un appelable comme valeur par défaut:

def midnight_today(): 
    return datetime.datetime.combine(datetime.date.today(), datetime.time(0,0)) 

...

promoted_from = models.DateTimeField(blank=True, null=True, default=midnight_today) 

Notez que cela devrait être un plaisir autonome ction, pas une méthode du modèle.

+0

merci pour votre réponse, je pense, j'ai besoin, s'il vous plaît vérifier ma mise à jour: j'ai besoin de 00:00 dans le domaine du temps. – Kai