Почему мой обратный отсчет времени возвращает NaN, когда я форматирую время в шаблоне django
Я работаю над приложением, где у меня есть обратный отсчет времени до даты события, у меня проблема с форматом времени в django, когда я форматирую дату начала в django format{{ event.start|date:'D D M Y' }}", он возвращает NaN в шаблоне, но когда я форматирую дату следующим образом "date: 2021-11-11T08:32:06+11:11", это работает, я искал решение здесь, но почему-то решение не сработало в моем случае.
HTML
#This works
<div class="items-center space-x-2 text-center grid grid-cols-4" uk-countdown="date: 2021-11-11T08:32:06+11:11">
#but this does not work, It returns NaN
<div class="items-center space-x-2 text-center grid grid-cols-4" uk-countdown="{{ event.start|date:'D d M Y' }}"">
Вот моя модель для события
class Event(models.Model):
title = models.CharField(max_length=220)
description = models.TextField(_('description'), blank=True)
image = models.ImageField(upload_to='events/',blank=True)
url = models.URLField(blank=True)
country = models.CharField(max_length=200,blank=True)
city = models.CharField(max_length=200, blank=True)
start = models.DateTimeField(_('start'),db_index=True,default=datetime.now().replace(microsecond=0))
end = models.DateTimeField(_('end'), db_index=True,default=datetime.now().replace(microsecond=0))
creator = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, related_name='create')
interested = models.ManyToManyField(settings.AUTH_USER_MODEL, related_name='interest')
going = models.ManyToManyField(settings.AUTH_USER_MODEL, related_name="going")
created_on = models.DateTimeField(auto_now_add=True)
updated_on = models.DateTimeField(auto_now=True)
service = models.CharField(_("service"), blank=True, max_length=200)
Мое представление для события
def event_main(request,pk):
event = get_object_or_404(Event, pk=pk)
posts = Post.objects.filter(event=pk).prefetch_related('event_comment').order_by('-date_posted')
related = Event.objects.filter(creator=request.user)
liked = [i for i in Post.objects.all() \
if Like.objects.filter(username = request.user, post=i)]
friend_list = FriendList.objects.get(user=request.user)
friends = friend_list.friends.all()
groups = GroupEx.objects.filter(group_members=request.user)
context = {'friends':friends,'groups':groups ,
'event':event,'posts':posts,'liked':liked,'related':related}
return render(request,'event/event_main.html',context)
Форматы совершенно разные... В первом примере значение представлено в формате ISO
uk-countdown="date: 2021-11-11T08:32:06+11:11"
во втором, вы форматируете его
uk-countdown="{{ event.start|date:'D d M Y' }}""
что даст вам
uk-countdown="Fri 11 Nov 2021""
вам, вероятно, следует использовать
uk-countdown="date: {{ event.start|date:"c" }}"
Обратите внимание, что я добавил префикс date:
и удалил второй "
, а также
У вас также есть проблема с настройками модели по умолчанию. Это:
start = models.DateTimeField(_('start'),db_index=True,default=datetime.now().replace(microsecond=0))
end = models.DateTimeField(_('end'), db_index=True,default=datetime.now().replace(microsecond=0))
даст вам время импорта модуля, которое в производстве может составлять несколько дней до сохранения вашей модели...