Necesito filtrar el modelo con (datetime.now() <end) Mi modelo
class Quiz(models.Model) : title = models.CharField(max_length=50) start = models.DateTimeFieldField(default="2021-10-10") end = models.DateTimeFieldField(default="2021-10-11")Mi vista
class GetQuizView(generics.ListAPIView) : def get_queryset(self): now = datetime.now() return Quiz.objects.filter(start = now) serializer_class = QuizListSerializerPero solo puedo filtrar con el mismo tiempo, no puedo usar > o <
__gt , __lt , __gte y __lte
Consulte los documentos: https://docs.djangoproject.com/en/3.2/ref/models/expressions/
Puede escribir su conjunto de consultas para que se vea así
class GetQuizView(generics.ListAPIView) : def get_queryset(self): now = datetime.now() end = "2021-10-11" return Quiz.objects.filter(start__range=[end, now]) serializer_class = QuizListSerializerTenga en cuenta que codifiqué el valor de la fecha de finalización, lo que no es una buena práctica, puede especificar fácilmente el rango (días) de su filtro usando la biblioteca de fecha y hora
Aquí hay otro fragmento de código
import pytz from datetime import date, timedelta from django.conf import settings #timezone aware object today = datetime.today().astimezone(pytz.timezone(settings.TIME_ZONE)) one_week = timedelta(days=7) end_date = today-one_week class GetQuizView(generics.ListAPIView) : def get_queryset(self): return Quiz.objects.filter(start__range=[end_date, today]) serializer_class = QuizListSerializer También puede usar el filtro django __lt y __gt según el documento
Nota: Esta esencia de astimezone() es hacer que la consulta tenga en cuenta la zona horaria y luego hacer que la zona horaria herede de la configuración de la zona horaria de su proyecto como se define en la settings.py de su proyecto.py