2009-06-29 7 views
1

Dans mon modèle, j'ai 2 propriétés datetime:Python, Django, datetime

start_date 
end_date 

Je voudrais compter de la date de fin comme une semaine de après la start_date.

Comment puis-je accomplir ceci?

+0

Il est généralement (mais pas toujours) mieux avoir une heure de début et une durée. YMMV. –

Répondre

5
>>> import datetime 
>>> start_date = datetime.datetime.now() 
>>> end_date = start_date + datetime.timedelta(7) 
>>> print end_date 
+0

simplement ajouter 7 jours à la date de début, en utilisant la classe timedelta –

8

Si vous voulez toujours votre date_fin être une semaine après la start_date, ce que vous pourriez faire, est de faire une coutume méthode de sauvegarde pour votre modèle. Une autre option serait d'utiliser des signaux à la place. Le résultat serait le même, mais puisque vous traitez avec les données de modèles, je suggérerais que vous optiez pour la méthode de sauvegarde personnalisée. Le code pour cela ressemblerait à quelque chose comme ceci:

class ModelName(models.Model): 
    ... 

    def save(self): 
     # Place code here, which is excecuted the same 
     # time the ``pre_save``-signal would be 
     self.end_date = self.start_date + datetime.timedelta(days=7) 

     # Call parent's ``save`` function 
     super(ModelName, self).save() 

Vous pouvez lire un peu sur la façon dont la méthode save/signaux est appelé dans les django docs à: http://docs.djangoproject.com/en/dev/ref/models/instances/

+0

Si vous utilisez le paquet datetime, n'oubliez pas de lire http://www.enricozini.org/2009/debian/using-python-datetime / – Mapio

Questions connexes