
Bernardo Augusto García Loaiza
PreguntaTengo el siguiente mixin en el que quiero recuperar los datos del modelo de
User
<code> class UserProfileDataMixin(object): def get_context_data(self, **kwargs): context = super(UserProfileDataMixin, self).get_context_data(**kwargs) user = self.request.user #context['userprofile'] = user.profile if user.is_authenticated(): context['userprofile'] = user.profile return context
Entonces, tengo la siguiente vista basada en clase en la cual deseo buscar usuarios acorde a la coincidencia con su
username
full_name
<code> class SearchView(UserProfileDataMixin, ListView): template_name = 'search.html' def get(self, request, *args, **kwargs): query = request.GET.get("q") qs = None if query: qs = User.objects.filter( Q(username__icontains=query) | Q(full_name__icontains=query) ) context = {"users": qs} return render(request, "search.html", context)
Cuando yo estoy heredando desde
UserProfileDataMixin
userprofile
search.html
layout.html
search.html template
<code> {% extends "layout.html" %}
layout.html template
<code> {% if userprofile %} I put the data of user by example: avatar, username, full_name, and menu options to my app. {% endif %}
Hasta aquí, todo bien, pero mi vista basada en clase
SearchView
UserProfileDataMixin
layout.html.
Cuando despliego la plantilla de búsqueda de usuarios, obtengo que mis datos de usuario no aparecen en el top menu o encabezado en donde deseo que aparezcan:
He cambiado ligeramente mi vista basada en clase
SearchView
get_queryset
get
<code> class SearchView(UserProfileDataMixin, ListView): template_name = 'search.html' def get_queryset(self): query = self.request.GET.get("q") qs = None if query: qs = User.objects.filter( Q(username__icontains=query) | Q(full_name__icontains=query) ) context = {"users": qs} return render(self.request, "search.html", context)
Y mi vista basada en clase
SearchView
UserProfileDataMixin
layout.html
search.html
Ahora, aparece en mi top header menu, estos datos que son los que me trae el
UserProfileDataMixin
¿Cuál es la razón, para que mi mixin
UserProfileDataMixin
SearchView
get
get_queryset
¿Por qué esto elimina el efecto de mi consulta Q ? ¿Cuándo debería usar
get
get_queryset
En este post, hay una respuesta muy ilustrativa y acorde a ello, pienso que el metodo
get_queryset
Por qué con
get_queryset
get