Hola todos, estoy leyendo un libro sobre django que se llama Two Scoops of Django. Me parece un poco avanzado y no termino de comprender el uso de "super" para reemplazar métodos en clases. Supongamos este ejemplo que da el libro:
Código:
from django.views.generic import ListView
from .models import Flavor
class FlavorListView(ListView):
model = Flavor
def get_queryset(self):
queryset = super(FlavorListView, self).get_queryset()
q = self.request.GET.get("q")
if q:
return queryset.filter(title__icontains=q)
Entonces, el modelo Flavor ya lo había creado antes el autor, q es el queryset que pasa del form a la view y bueno ListView es una de las views genéricas de Django.
Lo que no entiendo es más de Python:
como es que el método get_queryset se llama a sí mismo en la primera línea:
Código:
queryset = super(FlavorListView, self).get_queryset()
¿Cómo funciona eso? si el método get_queryset debe llamar en seguida a si mismo para establecer la variable queryset, ¿en qué momento se resuelve el método get_queryset?.
Lo que está haciendo aquí el autor es mostrando como se puede "override" el método get_queryset de la vista genérica ListView. Pero no logro comprender la lógica.
Si ustedes comprenden, les agradecería si me pueden explicar.