Я пытаюсь создать внутри модели функцию, которая не возвращает публикацию, опубликованную в будущем.
Это модель:
from django.db import models
from django.utils import timezone
import datetime
class ModelPost(models.Model):
title = models.CharField(
max_length=70,
unique=True,
)
publishing_date = models.DateTimeField(
default=timezone.now,
)
contents = models.TextField(
max_length=200,
blank=True,
)
def __str__(self):
return self.title
@property
def is_future(self):
if self.publishing_date > datetime.now()
return True
return False
Представления таковы:
def listPostsOnline(request):
posts_list = BlogPost.objects.all() #filter(published=True)
context = {"posts_list": posts_list}
template = 'blog/reading/list_post_online.html'
return render(request, template, context)
И это шаблон:
{% for p in posts_list %}
{% if not p.is_future %}
<div class="container my-4">
<h3><a href="{{ p.get_absolute_url }}">{{ p.title }}</a></h3>
<h5>{{ p.publishing_date|date:"d - M - Y | G:i:s" }}</h5>
</div>
{% else %}
<div class="container-full">
<h1>No data!</h1>
</div>
{% endif %}
{% endfor %}
Проблема в том, что у меня есть эта ошибка
модуль "datetime" не имеет атрибута "теперь '
приписано is_future
, и я не могу решить.
ОБНОВЛЕНИЕ
Я был вдохновлен этим post
FIRST TRY
Я поставил from datetime import datetime
вместо import datetime
и вижу эту ошибку:
не может сравнивать смещенные наивные и смещенные даты
ВТОРАЯ ПОПЫТКА
с import datetime
Я поставил if self.publishing_date > datetime.datetime.now():
вместоif self.publishing_date > datetime.now():
и я снова вижу это:
не может сравнивать смещенные наивные и учитывающие смещения даты и времени