I tried to fix my queryset method, checked some answers on Stackoverflow, but still couldn't do it.
Basically i want to validate my form, so when there is an lesson within ceratin range, a Student cannot propose this specific timerange to it's lesson.
The problem is that when i try to find a queryset withing DateTimeField that exists, i still got an empty queryset:
My model:
class Lesson(models.Model):
student = models.ForeignKey(User, on_delete=models.CASCADE)
subject = models.ForeignKey(Classroom, on_delete=models.CASCADE)
description = models.CharField(max_length = 200)
start_time = models.DateTimeField()
end_time = models.DateTimeField()
accepted = models.BooleanField(default=False)
Method in form:
def clean(self):
cleaned_data = super().clean()
lesson_start_time = cleaned_data.get('start_time')
lesson_end_time = cleaned_data.get('end_time')
queryset = Lesson.objects.filter(start_time__range=(lesson_start_time,lesson_end_time))
print(lesson_start_time) #2022-08-23 15:44:00+00:00
print(lesson_end_time) #2022-08-23 15:36:00+00:00
print(queryset) # <QuerySet []>
if lesson_end_time < lesson_start_time:
raise ValidationError("End time cannot be lower than start time!")
And there is for sure a Lesson Object within this range.
What i know for now is that it requeries something else to filter DateTimeField by range, but everything that i tried didn't work (for example: Django - Filter objects by DateTimeField with a date range).
Could you please help me?