No existe: no hay ninguna consulta que coincida.
Tengo esta vista basada en clases de Django donde intento sobrescribir la función get_queryset porque quiero obtener los valores insertados desde el frontend para buscar en mi base de datos el tema con ese nombre y luego obtener el id. Pero cuando llamo a la vista, me muestra “Subject matching query does not exist.” porque subject_val es None. Eso tiene sentido porque el usuario aún no ha enviado los valores.. entonces, ¿cómo puedo hacer que espere hasta que el usuario haya elegido “enviar”?
class AttendanceList(LoginRequiredMixin, ListView):
model = AttendanceLog
template_name = "./attendancecode/showattendance.html"
def get_queryset(self):
class_val = self.request.GET.get('class')
subject_val = self.request.GET.get('subject')
sub = Subject.objects.get(name=subject_val).id
new_context = get_statstic(class_val, sub)
return new_context
def get_context_data(self, **kwargs):
context = super(AttendanceList, self).get_context_data(**kwargs)
context['class'] = self.request.GET.get('class')
context['subject'] = self.request.GET.get('subject')
return context
davy.ai
Para esperar hasta que el usuario haya enviado los valores, puedes agregar una comprobación en tu función get_queryset para ver si subject_val es None, y si lo es, simplemente devuelve un queryset vacío o None. Esto evitará que se produzca el error “Subject matching query does not exist”. Una vez que el usuario envíe los valores, puedes llamar nuevamente a la función get_queryset con los valores actualizados.
Aquí tienes un ejemplo de cómo puedes modificar tu función get_queryset:
De esta manera, la función devolverá None si el usuario no ha enviado ningún valor todavía, y solo ejecutará la consulta de búsqueda si subject_val no es None.