[pyar] [django] Excluir un ítem de un dropdown en el admin de django

Juan Cruz Piñero jpinero en fi.uncoma.edu.ar
Mar Jun 20 13:19:38 ART 2017


Una va por el lado de lo que sugiere Antonio. Pisar el campo del formulario
definiendo el queryset que toma el campo.
Igual se me hace que vas a tener varias reglas de negocio que te obliguen a
separar Bomberos de OtrasPersonas, otra posibilidad que te puede
simplificar temas similares más adelante, es tener modelos PersonaAbstracta
(que sea una clase abstracta), Bombero y PersonaConcreta , las dos
heredando de PersonaAbstracta.
Así podés establecer los parentescos como foreign key a persona concreta.

 El orm de Django va a armar las tres tablas, con los atributos comunes en
la super clase y en las tablas de cada clase hija agrega un Persona_ptr que
asocia a la tupla de PersonaAbstracta. Mantiene consistencia de ids a nivel
de superclase permitiéndote manejar queryset de cualquiera de los tres
modelos.

Smartselects es una librería que te puede ayudar a trabajar con combo
dependientes, cuando en base al valor que el usuario elige en el select de
un modelchoicefield, actualizas el queryset de otro modelchoicefield.


El 20 jun. 2017 12:00 p. m., "Antonio Storni" <anto987 en gmail.com> escribió:

No entiendo 100% la estructura de clases que tenés, pero creo que una cosa
que podrías hacer es overridear el formfield,

mira esto:

https://docs.djangoproject.com/en/1.11/ref/contrib/admin/
#django.contrib.admin.ModelAdmin.formfield_for_foreignkey

Saludos!

Tony

2017-06-20 2:13 GMT-03:00 Mati Barriento <elmatibarriento en gmail.com>:

> On June 20, 2017 2:06:22 AM GMT-03:00, "Rafael E. Ferrero" <rafael.ferrero
> @gmail.com> wrote:
>>
>> En mi proyecto tengo que relacionar dos personas mediante su parentesco
>> (hermano/a, padre/madre, etc)
>> Tengo la clase Persona y otra clase hija de esta llamada Bombero. La onda
>> es que tengo que indicar qué parentesco tiene el Bombero elegido con la
>> Persona elegida para ello en mi Admin tengo dos dropdown, uno para Bombero
>> y otro para Persona.
>>
>> El tema es que como Bombero hereda de Persona el bombero también me
>> figura en el segundo dropdown y no debería.
>>
>> ¿Cómo puedo excluír del dropdown de Persona al bombero elegido en el otro
>> dropdown en el Admin de Django?
>>
>> ya le pregunté bastante a San Google pero no le encuentro la vuelta.
>> (hablan mucho de django-smart-select para relacionar dos dropdowns pero por
>> lo que leo no me sirve para lo que necesito)
>>
>>
>> Saludos!!
>>
>> Rafael E. Ferrero
>>
>
> Lo que encontré hace un tiempo pero todavía no probé es que podés agregar
> archivos js al admin. Yo lo haría desde ahí con un evento de Javascript.
> De todas formas tal vez alguien yo haya resuelto desde el admin.
> Saludos y por favor comparti la solución que uses
>
> _______________________________________________
> Lista de Correo de PyAr - Python Argentina - pyar en python.org.ar
> Sitio web: http://www.python.org.ar/
>
> Para administrar la lista (o desuscribirse) entrar a
> http://listas.python.org.ar/listinfo/pyar
>
> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
> Argentina - http://www.usla.org.ar
>


_______________________________________________
Lista de Correo de PyAr - Python Argentina - pyar en python.org.ar
Sitio web: http://www.python.org.ar/

Para administrar la lista (o desuscribirse) entrar a
http://listas.python.org.ar/listinfo/pyar

La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
Argentina - http://www.usla.org.ar
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20170620/49d0f37d/attachment.html>


Más información sobre la lista de distribución pyar