5

I have a small Django app with a form, wich saves some data to the DB.

Here's the form:

class SomeForm(forms.Form):
    time = forms.DateTimeField()
...

And the view, where I save it:

class AccountAddIncome(View):
    def save(self, form):
        model = Model(
            time=form.cleaned_data['time']
        )
        model.save()

    def post(self, request, *args, **kwargs):
        form = SomeForm(request.POST)
        if form.is_valid():
            self.save(form)
            return redirect(self.success_url)
        else:
            ...

My problem is, that the Django admin says: "Note: You are 1 hour ahead of server time."
The date command on my Ubuntu (the server) says exactly the same date as my computer has.

But, when I save this object in the DB, and make the following query:

Model.objects.filter(time__lt=timezone.now())

django do not list the previously saved model for an hour. If I go to the admin, and set the time back one hour, django'll show that object.

So, my question is, what's the best practice, to manage datetime objects in django?

I want to save everything in UTC, but I cannot convert that datetime from the form to UTC.

Nagy Vilmos
  • 1,878
  • 22
  • 46

1 Answers1

-5

go to settings.py of your Django project

comment timezone settings and use TIME_ZONE = timezone.now()

from django.utils import timezone


TIME_ZONE = timezone.now()

# TIME_ZONE = 'UTC'
# USE_I18N = True
# USE_L10N = True
# USE_TZ = True

Than you will never see this - Note: You are 1 hour ahead of server time.

Rajiv Sharma
  • 6,746
  • 1
  • 52
  • 54