Puis-je modifier la fonction __str__()
par défaut de l'objet datetime.datetime? Par défaut, il retourne quelque chose comme '2010-06-28 12:43:56.985790'
, et j'en ai besoin pour imprimer quelque chose comme '2010-06-28T12:44:21.241228'
(qui est la fonction isoformat()).Modification du format d'impression de date par défaut en python
J'ai besoin de cela pour la sérialisation JSON d'un modèle django.
Mon modèle est:
class Transport(models.Model):
user = models.ForeignKey(User)
source = models.ForeignKey(Marker, related_name="source_marker")
destination = models.ForeignKey(Marker, related_name="destination_marker")
object = models.CharField(choices=possesion_choices, max_length=2**6)
quantity = models.IntegerField()
time_sent = models.DateTimeField()
time_arrived = models.DateTimeField()
Et quand je sérialiser (en utilisant le wadofstuff module), elle imprime quelque chose comme
print serializers.serialize('json', Transport.objects.all(), relations=('source', 'destination',) indent=4)
[
{
"pk": 1,
"model": "main.transport",
"fields": {
[.. bla bla ..]
"time_sent": "2010-06-28 12:18:05",
"time_arrived": "2010-06-28 12:38:36",
[.. bla bla ..]
}
}
]
Il m'a fallu un moment pour trouver la documentation pour cela. C'est ici dans la page des champs personnalisés - http://docs.djangoproject.com/fr/1.2/howto/custom-model-fields/#converting-field-data-for-serialization – pycruft
Apparemment, cela ne fonctionne pas. La sortie est la même. Étrange, puisque la documentation dit que cela devrait être fait comme ça. –