[pyar] [django] Extender modelo de una reusable app con metodos nuevos

Andres Riancho andres.riancho en gmail.com
Mie Sep 18 12:46:19 ART 2013


Daniel,

2013/9/18 Daniel Moisset <dmoisset en machinalis.com>:
> si realmente le queres meter mano a la otra clase y lo haces por
> monkeypatching, me parece que puede ser mas manejable escribir un mixin, y
> agregarlo al bases de la clase que monkeypatcheas, asi podes tener todo mas
> o menos junto.

Ahora miro esta opcion, parece interesante!

> Si solo queres tener unos metodos extra, por ahi usar proxy models es la
> forma mas estandar en django de hacerlo

Proxy models, eso ni sabia que existia :) Despues de mirar un rato
parece que no me va a servir, porque lo que me va a pasar (creo, por
favor confirmame) es que si tengo un metodo "get_foo_list" en algun
lado de la reusable app, el metodo va a tener una implementacion como:

from reusable_app import Foo
def get_foo_list():
    return Foo.objects.all()

Lo que me va a devolver objetos del tipo Foo de la reusable app. Esto
va a hacer que tenga que tener cuidado con que tipo de objeto me
devuelve la reusable app y tengo que despues transformarlo al que yo
quiero.

Saludos,

> Saludos,
>     D.
>
>
>
> 2013/9/18 Andres Riancho <andres.riancho en gmail.com>
>>
>> Rafael,
>>
>>     No lo probe realmente, pero asumo que no va a andar porque despues
>> la reusable app no va a usar "bar" para hacer todas las cosas de
>> manera interna, va a seguir usando su "foo" (porque va importar ese
>> objeto desde la reusable app, no el "bar" que yo modifique). Ademas
>> asumo que va a haber problemas con los modelos a nivel de BD
>>
>> 2013/9/18 Rafael E. Ferrero <rafael.ferrero en gmail.com>:
>> > no se yo me imagino:
>> >
>> >
>> > from reusable_app.models impor foo
>> >
>> > class bar(foo):
>> >     my_new_field = models....
>> >
>> >    def mi_methodo()
>> >
>> >
>> >
>> > El 18 de septiembre de 2013 12:09, Andres Riancho
>> > <andres.riancho en gmail.com>
>> > escribió:
>> >>
>> >> Lista,
>> >>
>> >>     Estoy intentando extender un modelo de una reusable app de la mejor
>> >> manera posible. Hasta ahora, y como habia solo extendido el modelo con
>> >> nuevos fields use `contribute_to_class`:
>> >>
>> >> from reusable_app import Foo
>> >> models.CharField(max_length=255).contribute_to_class(Foo,
>> >> 'short_description')
>> >>
>> >>     Eso me funciono bien, pero ahora estoy queriendo extender el modelo
>> >> con metodos nuevos. No encontre una manera
>> >> documentada/soportada/correcta de
>> >> hacer esto, existe? Estoy queriendo evitar  mantener mi propio fork de
>> >> la
>> >> reusable app, entiendo que podria copiar toda la app a mi repositorio,
>> >> modificarla, agregarla a INSTALLED_APPS, etc. pero no lo veo como una
>> >> buena
>> >> practica.
>> >>
>> >>     Lo que si encontre fue django-extend-model [0], una reusable
>> >> application que te permite monkey-patchear la clase del modelo original
>> >> para
>> >> extenderla con nuevos fields y metodos. Alguien la usa?
>> >>
>> >> [0] https://github.com/mikexstudios/django-extend-model
>> >>
>> >> Saludos,
>> >> --
>> >> Andrés Riancho
>> >> Project Leader at w3af - http://w3af.org/
>> >> Web Application Attack and Audit Framework
>> >> Twitter: @w3af
>> >> GPG: 0x93C344F3
>> >>
>> >> _______________________________________________
>> >> pyar mailing list pyar en python.org.ar
>> >> http://listas.python.org.ar/listinfo/pyar
>> >>
>> >> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>> >>
>> >> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
>> >> Argentina - http://www.usla.org.ar
>> >
>> >
>> >
>> >
>> > --
>> > Rafael E. Ferrero
>> >
>> > _______________________________________________
>> > pyar mailing list pyar en python.org.ar
>> > http://listas.python.org.ar/listinfo/pyar
>> >
>> > PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>> >
>> > La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
>> > Argentina - http://www.usla.org.ar
>>
>>
>>
>> --
>> Andrés Riancho
>> Project Leader at w3af - http://w3af.org/
>> Web Application Attack and Audit Framework
>> Twitter: @w3af
>> GPG: 0x93C344F3
>> _______________________________________________
>> pyar mailing list pyar en python.org.ar
>> http://listas.python.org.ar/listinfo/pyar
>>
>> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>>
>> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
>> Argentina - http://www.usla.org.ar
>
>
>
> _______________________________________________
> pyar mailing list pyar en python.org.ar
> http://listas.python.org.ar/listinfo/pyar
>
> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>
> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
> Argentina - http://www.usla.org.ar



-- 
Andrés Riancho
Project Leader at w3af - http://w3af.org/
Web Application Attack and Audit Framework
Twitter: @w3af
GPG: 0x93C344F3


More information about the pyar mailing list