Reputation: 1197
I'm saving date in UTC. I wan't to change that date to automatic user timezone.
my settings
USE_TZ = True
my template
{% for sale in sales %}
date : {{sale.date}}
{% endfor %}
I tried django-tz-detect
https://github.com/adamcharnock/django-tz-detect
but I can't implement that correctly.
Please suggest a good way to solve this issue.
Upvotes: 4
Views: 3840
Reputation: 1197
I got a solution from here
I created a view function
@login_required
@ajax_required
@require_GET
def set_user_timezone(request):
timezone = request.GET.get('timezone')
request.session["set_user_timezone"] = timezone
response_data = {}
response_data['status'] = 'true'
response_data['message'] = 'user timezone set successfully.'
return HttpResponse(json.dumps(response_data), mimetype='application/javascript')
context
if "set_user_timezone" in request.session:
user_session_ok = True
user_time_zone = request.session['set_user_timezone']
else:
user_session_ok = False
user_time_zone = "Asia/Kolkata"
in my base template
{% if not user_session_ok %}
<script type="text/javascript" src="{% static 'js/jstz.js' %}"></script>
<script>
$(document).ready(function(){
var timezone = jstz.determine();
var timezone_name = timezone.name();
$.ajax({
url : '/set-user-timezone/',
action : "GET",
data : {
timezone : timezone_name
},
success : function(data){
},
error : function(data){
}
})
});
</script>
{% endif %}
my sales template
{% for sale in sales %}
{% load tz %}
date : {{ sale.sale_date|timezone:user_time_zone }}
{% endfor %}
I don't know this is the correct method. but this solution works for me.
Upvotes: 2