Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Django default=timezone.now() saves records using "old" time

This issue has been occurring on and off for a few weeks now, and it's unlike any that has come up with my project.

Two of the models that are used have a timestamp field, which is by default set to timezone.now().

This is the sequence that raises error flags:


  • Model one is created at time 7:30 PM

  • Model two is created at time 10:00 PM, but in the MySQL database it's stored as 7:30 PM!

Every model that is created has its time stamp saved under 7:30 PM, not the actual time, until a certain duration passes. Then a new time is set and all the following models have that new time... Bizzare


Some extra details which may help in discovering the issue:

I have a bunch of methods that I use to strip my timezones of their tzinfo's and replace them with UTC.

This is because I'm doing a timezone.now() - creationTime calculation to create a: "model was posted this long ago" feature in the project. However, this really should not be the cause of the problem.

I don't think using datetime.datetime.now() will make any difference either.

Anyway, thanks for the help!

like image 296
Lucas Ou-Yang Avatar asked Nov 05 '12 04:11

Lucas Ou-Yang


People also ask

How does Django save current date and time in database?

First, open the views.py file of your Django application and import the datetime module. Next, use the datetime. now() method to get the current date and time value. Now, we can either assign this method to a variable or we can directly use this method wherever we required the datetime value.

What is Django default datetime format?

django default date to be in format %d-%m-%Y.


1 Answers

Just ran into this last week for a field that had default=date.today(). If you remove the parentheses (in this case, try default=timezone.now) then you're passing a callable to the model and it will be called each time a new instance is saved. With the parentheses, it's only being called once when models.py loads.

like image 54
Jamey Sharp Avatar answered Sep 25 '22 02:09

Jamey Sharp