Queryset en Django admin según usuario

La zona de administración de Django es una de las cosas que más agradecemos los programadores. El problema viene cuando queremos permitir que el usuario la utilice… Para eso primero hay que personalizarla un poco.

Una de las personalizaciones interesantes es que el usuario no vea todas las entradas de una tabla, por ejemplo, para ello podemos hacer uso de este código. Espero que os sea de utilidad.

TablaEjemploAdmin(models.Model):
	list_display = ...
	list_filter = ...
	ordering = ...
	def queryset(self, request):
		# Obtenemos el listado original
		qs = super(TablaEjemploAdmin, self).queryset(request)
		# Trabajamos con él para, por ejemplo, mostrar sólo entradas
		# cuyo user sea igual al que realiza la petición
		qs = qs.exclude(user!=request.user)
		# Se devuelve el listado
		return qs
admin.register(TablaEjemplo, TablaEjemploAdmin)

¿Lo hacéis de otra forma? Por favor, colaborar con un comentario.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *