[pyar] [Discusión] Django y Single Responsability Pattern

Luis Masuelli luismasuelli en hotmail.com
Mar Jul 29 12:53:13 ART 2014


Podríamos decir que Hibernate es un DataMapper (porque lo es, simple - los objetos JAVA en Hibernate son planos). Pero en Django nunca vi un DataMapper, ni en tutoriales ni en codigo fuente de proyectos independientes. No se si es bueno o malo, pero Django abandonó el SRP (digamos que sí: aunque explícitos, los objetos de modelo son mágicos y todopoderosos ... a la bosta el SRP ahí) para inclinarse mas hacia el DRY y tener al mismo tiempo código más cortito sin mucho boilerplate que digamos (al punto en el que tenemos vistas genericas).
Date: Tue, 29 Jul 2014 12:28:22 -0300
From: ajlopez2000 en gmail.com
To: pyar en python.org.ar
Subject: Re: [pyar]	[Discusión] Django y Single Responsability Pattern

Hola gente!
Interesante discusion.
Yo comentaria que Selesan, esta como preguntando dos cosas, y yo quisiera tratar primero una. El escribe

Buenas gente!. Estoy leyendo sobre Django (empecé por Django, si no me gusta veré Flask o algún otro web framework) y una de las primeras cosas que me llamó la atención es que los modelos son más bien modelos de datos, ya que especifican los campos y heredan el comportamiento para almacenar en la base de datos. 


No se habitua en Python/Django tener un DataMapper? Como en:
http://www.martinfowler.com/eaaCatalog/dataMapper.html


en vez de lo que describe Selesan, que me parece es un http://www.martinfowler.com/eaaCatalog/activeRecord.html (tambien me lo encuentro asi en Ruby on Rails approach default parece)

Primero queria sacarme esa duda, antes de pasar al tema de "cuando creo una factura, debo hacer las validaciones de negocios (que el cliente tenga saldo, que haya stock suficiente, etc), actualizar el stock de los productos, actualizar el saldo del cliente y persistir la factura con sus items."

Nos leemos!

Angel "Java" Lopez en ajlopez



2014-07-28 16:52 GMT-03:00 Jose Selesan <jselesan en gmail.com>:

Buenas gente!. Estoy leyendo sobre Django (empecé por Django, si no me gusta veré Flask o algún otro web framework) y una de las primeras cosas que me llamó la atención es que los modelos son más bien modelos de datos, ya que especifican los campos y heredan el comportamiento para almacenar en la base de datos. 



Ahora bien, en los ejemplos que vi, desde la vista misma (ya sea una Class View o una función) se persisten las entidades. Esto está bien en ejemplos sencillos, pero en casos más complejos, ¿no viola el principio de responsabilidad única? Por ejemplo cuando creo una factura, debo hacer las validaciones de negocios (que el cliente tenga saldo, que haya stock suficiente, etc), actualizar el stock de los productos, actualizar el saldo del cliente y persistir la factura con sus items. ¿Donde ponen ese código? ¿En la vista? ¿O se crea una clase de de servicio como suele usarse en Java o .Net?


José


_______________________________________________

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 		 	   		  
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20140729/55b78758/attachment-0001.html>


More information about the pyar mailing list