Cómo lograr que un usuario solo vea datos introducidos por él y no por otros

655 views
Skip to first unread message

KZKG^Gaara

unread,
Jul 12, 2013, 2:11:58 PM7/12/13
to djan...@googlegroups.com
Antes que todo presentarme.

Mi nombre es Alejandro (a.k.a KZKG^Gaara), nací y vivo en Cuba y llevo usando GNU/Linux desde hace varios años.

En Django soy un novato de pies a cabeza, aún estoy dando mis primeros pasos pero ya tengo en mente un proyecto, sé que muchos estarán de acuerdo conmigo en que la mejor forma de avanzar y aprender, es simplemente trabajar, ir practicando, tener una meta :)

El asunto es que necesito un poco de ayuda para entender varias cosas de Django, por ejemplo este caso:

1. Los usuarios introducirán determinadas URLs (estoy leyendo cómo validar que se introduzca solo URLs, esto es tarea para la casa)
2. El usuario 'debian' introducirá determinadas URLs, el usuario 'archlinux' introducirá otras, etc. Necesito saber cómo lograr que el usuario 'debian' solo pueda ver y modificar las URLs previamente introducidas por él, o sea, que no vea ni modifique las de 'archlinux' y viceversa.
3. Esto debo lograrlo en un template (favs.html por ejemplo) así como también en el panel de administración.

He estado leyendo algo al respecto de modificar el /admin/ de Django pero, prefiero preguntar acá e intentar primero lograr 'separar los datos' en templates primero y ya luego una vez entienda cómo hacerlo, me lanzaré a intentar modificar el panel de administración.

Bueno nada más que agregar. Muchas gracias a todos por adelantado.

Saludos cordiales.

Yordis Prieto

unread,
Jul 12, 2013, 5:51:53 PM7/12/13
to djan...@googlegroups.com
hola hermano yo tambien soy graduado de un IPI, a ver explicame algo esas urls estan en una base de datoso en archivos urls.py .


--
--
Ha recibido este mensaje porque está suscrito a Grupo "Grupo de Usuarios del Framework Django de habla hispana" de Grupos de Google.
Si quieres publicar en este grupo, envía un mensaje de correo
electrónico a djan...@googlegroups.com
Para anular la suscripción a este grupo, envíe un mensaje a django-es-...@googlegroups.com
Para obtener más opciones, visita este grupo en http://groups.google.com.bo/group/django-es.
---
Has recibido este mensaje porque estás suscrito al grupo "Django-es" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus correos electrónicos, envía un correo electrónico a django-es+...@googlegroups.com.
Para obtener más opciones, visita https://groups.google.com/groups/opt_out.
 
 

Diego Uribe Gamez

unread,
Jul 12, 2013, 5:52:41 PM7/12/13
to djan...@googlegroups.com
mmmm no entiendo, pero aquí te mando algo y me comentas para complementar:

quieres que un usuario modifique el archivo de urls de django? desde un template y reconocer cuales agrego y solo se las muestre a el?

si es ese el caso, yo lo haría a nivel de modelos, le signo un usuario a un modelo y en este modelo guardo sus urls creadas, en la vista llamo el modelo con su usuario relacionado, esto como resultado me daría mis urls creadas, si hago login con un usuario mostrara las url creadas por ese usuario.


--
--
Ha recibido este mensaje porque está suscrito a Grupo "Grupo de Usuarios del Framework Django de habla hispana" de Grupos de Google.
Si quieres publicar en este grupo, envía un mensaje de correo
electrónico a djan...@googlegroups.com
Para anular la suscripción a este grupo, envíe un mensaje a django-es-...@googlegroups.com
Para obtener más opciones, visita este grupo en http://groups.google.com.bo/group/django-es.
---
Has recibido este mensaje porque estás suscrito al grupo "Django-es" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus correos electrónicos, envía un correo electrónico a django-es+...@googlegroups.com.
Para obtener más opciones, visita https://groups.google.com/groups/opt_out.
 
 



--
  Diego Alonso Uribe Gamez

Desarrollador web

Twitter: @DiegoUG

Google+: http://gplus.to/diegoug



KZKG^Gaara

unread,
Jul 13, 2013, 1:38:52 PM7/13/13
to djan...@googlegroups.com
Muchas gracias por sus respuestas.

@Yordis Prieto: ¿Cómo sabes que me gradué de un IPI? :D

@Yordis Prieto & @DiegoUG: Pedirles disculpa a ambos, no me supe explicar bien :)
Puse el ejemplo de las URLs, pero puede ser cualquier tipo de datos. O sea, la respuesta es no, ningún usuario tiene o debe modificar el urls.py.
Mencioné URLs por poner un ejemplo de tipo de datos, puede ser nombres de personas, mascotas, etc.

Por ejemplo, deseo que el usuario 'archlinux' cuando introduzca información (HP, Toshiba, Samsung, etc) estos datos introducidos por él no los pueda ver más ningún usuario (usuarios como 'debian', etc). A su vez, datos introducidos por 'debian' (por ejemplo, IBM, Dell, etc) solo los podrá ver 'debian', más ningún usuario.
Pido disculpas una vez más por poner el anterior ejemplo con URLs, lo que lo hizo un poco confuso pues se podía interpretar que deseaba que usuarios pudiesen modificar urls.py ... que repito, no es así :)

Muchas gracias otra vez por su ayuda.

Hiko hitokiri

unread,
Jul 13, 2013, 2:44:42 PM7/13/13
to djan...@googlegroups.com
pues podes capturar el usuario que guarda el registro y luego cuando haces la consulta hacer unas queris con Q para decirle los where   poner como
regla  para mostrar el usuario que esta pidiendo la info 

ejemplo request.user.username para capturar el dato luego lo metes en la querry con las Q

Yordis Prieto

unread,
Jul 13, 2013, 3:37:01 PM7/13/13
to djan...@googlegroups.com
django trae por defectos un Models Grupo y Usuario, lo que puedes hacer que tu modelo tenga asignado un grupo o algo asi
 entonces en la interfaz solo vaz a mostrar los que esten asosciado a determinado grupo, todo esta en que busque las consulta correcta
pero eso depende de tu modelo de base de datos y como lo quieres estructurar

mi pregunta es, donde quieres ese tipo de filtro, en el administrador de django????




--

Yordis Prieto

unread,
Jul 13, 2013, 3:37:55 PM7/13/13
to djan...@googlegroups.com
ah solo vi tus datos en google+ y decia que eras graduado de un IPI y yo se que es eso :D

KZKG^Gaara

unread,
Jul 13, 2013, 3:58:45 PM7/13/13
to djan...@googlegroups.com
@hiko_hitokiri: Gracias por tu respuesta. No obstante... lo dicho, soy todo un novato en este campo por lo que, lo siento pero no entendí lo que me explicaste :(

@Yordis Prieto: Sí sí, veo en el panel de administración que los usuarios se pueden agrupar en Grupos, etc.
En realidad donde quiero mostrar todo siempre será en templates, o sea, no tengo pensado (al menos inicialmente) que los usuarios puedan acceder a /admin/.

O sea, lo que deseo es:
- Usuario 'debian' introduce (mediante add-data.html) lo siguiente: "hp, dell"
- Usuario 'archlinux' introduce (mediante add-data.html) lo siguiente: "samsung, ibm"
- Cuando el usuario 'debian' acceda a show-data.html le aparecerá: "hp, dell"
Cuando el usuario 'archlinux' acceda a show-data.html le aparecerá: "samsung, ibm"

Muchas gracias a todos, sé que no soy programador como tal (mi campo es administración de servidores) pero entiendo a la perfección ciclos como if-else & for & while, solo que de Django ando realmente corto de conocimientos, aún estoy aprendiendo y es por eso que se me dificulta tanto entender cómo lograr lo que deseo, porque no conozco las querys que debo configurar, lo que me permite o facilita Django para esto, etc

Jhónatan Mosquera

unread,
Jul 13, 2013, 4:57:42 PM7/13/13
to djan...@googlegroups.com
Hola, yo supongo que en tu add-data.html hay un formulario que se guarda en un modelo o me equivoco? En el caso que ese sea el caso y quieras ver los datos que inserta un usuario autentificado lo que tendrias que hacer es hacer un ForeignKey al modelo de tus usuarios (si usas el mismo de django es User) y al momento de guardar este formulario lo hagas mediante una instancia que contenga al objeto User, luego cuando quieras sacar los datos que almaceno solo un usuario lo haces mediante un filter.


--
--
Ha recibido este mensaje porque está suscrito a Grupo "Grupo de Usuarios del Framework Django de habla hispana" de Grupos de Google.
Si quieres publicar en este grupo, envía un mensaje de correo
electrónico a djan...@googlegroups.com
Para anular la suscripción a este grupo, envíe un mensaje a django-es-...@googlegroups.com
Para obtener más opciones, visita este grupo en http://groups.google.com.bo/group/django-es.
---
Has recibido este mensaje porque estás suscrito al grupo "Django-es" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus correos electrónicos, envía un correo electrónico a django-es+...@googlegroups.com.
Para obtener más opciones, visita https://groups.google.com/groups/opt_out.
 
 



--
------------------------------------------
Jhónatan Mosquera Tabra

Hiko hitokiri

unread,
Jul 13, 2013, 5:08:01 PM7/13/13
to djan...@googlegroups.com
claro osea la cosa es en el formulario guardas los datos en el modelo  el modelo tiene un campo dirigido osea un foreignkey hacia el modelo user  para recuperar
el usuario que mando el request osea el que esta en sesion se utilisa request.user.username eso lo podes usar en una query AND o OR entonces haces una querry por ejemplo
 urls.objects.filter(Q(username = request.user.username) , Q(date_lte = '10,4,2013'))  tonces busca toso los datos de ese usuario en esa fecha por ejemplo si los quieres todos
pues es de leer ahi  y ya como es la query en la documentacion 

lord.carcas

unread,
Aug 2, 2013, 10:29:46 PM8/2/13
to djan...@googlegroups.com
creo que medio te entendi pero con get_queryset puedes solo mostrar sus datos del usuario logueado
https://docs.djangoproject.com/en/dev/ref/contrib/admin/#django.contrib.admin.ModelAdmin.get_queryset

saludos
@sacrac1


Willians Vivanco

unread,
Aug 12, 2013, 1:06:01 PM8/12/13
to djan...@googlegroups.com
Si lo que buscas es mostrar los datos agrupados en el template
(asumiendo que de alguna manera tengas vinculado en tu modelo esas
urls o lo que sea con su respectivo usuario), deberias revisar esto:
https://docs.djangoproject.com/en/1.5/ref/templates/builtins/#regroup

Slds
> --
> --
> Ha recibido este mensaje porque está suscrito a Grupo "Grupo de Usuarios del
> Framework Django de habla hispana" de Grupos de Google.
> Si quieres publicar en este grupo, envía un mensaje de correo
> electrónico a djan...@googlegroups.com
> Para anular la suscripción a este grupo, envíe un mensaje a
> django-es-...@googlegroups.com
> Para obtener más opciones, visita este grupo en
> http://groups.google.com.bo/group/django-es.
> ---
> Has recibido este mensaje porque estás suscrito al grupo "Django-es" de
> Grupos de Google.
> Para anular la suscripción a este grupo y dejar de recibir sus correos
> electrónicos, envía un correo electrónico a
> django-es+...@googlegroups.com.
> Para obtener más opciones, visita https://groups.google.com/groups/opt_out.
>
>
>


--
Willians Vivanco
http://about.wvivanco.com/
Reply all
Reply to author
Forward
0 new messages