Когда я захожу на страницу, ничего не появляется
вопрос
Я хочу использовать следующий код для фильтрации данных в models.py в views.py и вывода списка Today_list в today.html, но когда я открываю этот url, ничего не отображается. В чем проблема?
class Post(models.Model):
created =models.DateTimeField(auto_now_add=True,editable=False,blank=False,null=False)
title =models.CharField(max_length=255,blank=False,null=False)
body =models.TextField(blank=True,null=False)
def __str__(self):
return self.title
from Todolist import models
from django.views.generic import ListView
from django.utils import timezone
class TodayView(ListView):
model = models.Post
template_name ='Todolist/today.html'
def get_queryset(self):
Today_list= models.Post.objects.filter(
created=timezone.now()).order_by('-id')
return Today_list
{% extends "Todolist/base.html" %}
{% block content %}
{% for item in Today_list %}
<tr>
<td>{{item.title}}</td>
</tr>
{% endfor %}
{% endblock %}
urlpatterns=[
path('today/' ,views.TodayView.as_view() ,name='today')]
используйте get_context_data для добавления списка Today_list в контекст ссылка : https://docs.djangoproject.com/en/4.1/ref/class-based-views/generic-display/
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context['Today_list'] = self.get_queryset()
return context
<
{% extends "Todolist/base.html" %}
{% block content %}
{% for item in post_list %}
<tr>
<td>{{item.title}}</td>
</tr>
{% endfor %}
{% endblock %}
или вы можете просто использовать в шаблоне model.name_list в вашем случае это будет post_list вместо today_list
Проблема в том, что вам нужны объекты, которые были созданы сегодня, но ваш фильтр проверяет только сегодня, а не today
.
Поэтому для достижения сегодняшних постов, вы можете сделать такую фильтрацию:
from django.utils import timezone
def get_queryset(self):
Today_list = models.Post.objects.filter(
created__gte=timezone.now().replace(hour=0, minute=0, second=0),
created__lte=timezone.now().replace(hour=23, minute=59, second=59)
).order_by('-id')
return Today_list
этот набор запросов возвращает объекты, которые были созданы сегодня.