Champs d'horodatage à Django
J'ai une base de données MySQL, maintenant je suis en générant tous les champs de datetime comme models.DateTimeField
. Est-il possible d'obtenir un timestamp
à la place? Je veux être en mesure de mise à jour automatique lors de la création et de mise à jour etc.
La documentation de django ne dispose pas de cette?
source d'informationauteur KVISH
Vous devez vous connecter pour publier un commentaire.
Il y a effectivement un très bon et instructif article sur ce. Ici:
http://ianrolfe.livejournal.com/36017.html
La solution sur la page est un peu obsolète, j'ai donc fait la suivante:
Pour l'utiliser, tout ce que vous avez à faire est de:
timestamp = UnixTimestampField(auto_created=True)
Dans MySQL, la colonne doit apparaître comme:
'timestamp' timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
Seul inconvénient de cette approche est qu'il ne fonctionne que sur les bases de données MySQL. Mais vous pouvez facilement le modifier pour les autres.
Pour mettre à jour automatiquement lors de l'insertion et de mise à jour, utilisez ceci:
La DateTimeField doit stocker UTC (vérifier les paramètres de votre base de données, je sais de Postgres que c'est le cas). Vous pouvez utiliser
l10n
dans les modèles et format via:De secondes depuis l'Époque Unix:
Voir https://docs.djangoproject.com/en/1.10/ref/templates/builtins/#date
Le pip paquet de django-unixdatetimefield fournit un UnixDateTimeField champ que vous pouvez utiliser pour cela la sortie de la boîte (https://pypi.python.org/pypi/django-unixdatetimefield/).
Exemple de modèle:
Python ORM requête:
Base de données:
Voici le code source si vous êtes intéressé - https://github.com/Niklas9/django-unixdatetimefield.
Disclaimer: je suis l'auteur de ce pip paquet.