así que todavía estoy creando mi aplicación de lista de tareas pendientes y quiero mostrar todos los elementos que tienen la fecha de hoy como fecha límite para recordarle al usuario las tareas pendientes.
modelos.py
from django.db import models from django.contrib.auth.models import User # Create your models here. class ToDo(models.Model): owner = models.ForeignKey(User, on_delete=models.CASCADE) todo = models.CharField(max_length=50) description = models.TextField(max_length=200, blank=True) created = models.DateField(auto_now=True) end = models.DateField() start = models.DateField() completed = models.BooleanField(default=False) def __str__(self): return f'{self.owner} - {self.todo}'vistas.py
def index(request): activities = ToDo.objects.all() today = ToDo.objects.get(end=datetime.date.today) todo = ToDo.objects.count() complete = ToDo.objects.filter(completed=True).count() percent = complete * 100 // todo if request.method == 'POST': try: search = request.POST.get('todo') activities = ToDo.objects.filter(todo__icontains=search) except: search = request.POST.get('end') activities = ToDo.objects.filter(end=search) context = { 'activities' : activities, 'percent' : percent, 'today' : today, } return render(request, 'home.html', context)Importé DateTime en mis vistas.py
Prueba esto
from django.utils import timezone def index(request): today = timezone.localtime(timezone.now()) deadline_today = ToDo.objects.filter( end__year=today.year, end__month=today.month, end__day=today.day ) context = { ... 'today' : deadline_today , }¡Ya casi has llegado!
today = ToDo.objects.get(end=datetime.date.today) Es el problema. get() se usa para obtener una sola fila, desea todas las filas coincidentes, lo que se realiza mediante el filter . también está enviando la función today , en lugar de llamarla con today() .
Hacer esto:
today = ToDo.objects.filter(end=date.today())