Ver Mensaje Individual
  #1 (permalink)  
Antiguo 17/08/2012, 16:29
Avatar de _cronos2
_cronos2
Colaborador
 
Fecha de Ingreso: junio-2010
Mensajes: 2.062
Antigüedad: 13 años, 10 meses
Puntos: 310
Wrappers en Django

Buenas noches amigos del foro. Estoy trabajando en un proyecto en Django y me he encontrado con un problema bastante interesante (al menos eso parece, espero que sea una tontería).
Resulta que, debido a que es un proyecto relativamente grande, la "API" sobre los modelos iba creciendo y creciendo haciendo engorroso el trabajo, por lo que decidí pasar a utilizar wrappers. Básicamente, si antes tenía una estructura así:
Código Python:
Ver original
  1. # models.py
  2.  
  3. class MyModel(models.Model):
  4.     prop1 = ...
  5.     prop2 = ...
  6.  
  7.     def f1(self):
  8.         pass
  9.     def f2(self):
  10.         pass
Ahora estoy así:
Código Python:
Ver original
  1. # models.py
  2.  
  3. class MyModel(models.Model):
  4.     prop1 = ...
  5.     prop2 = ...
  6.  
  7. # wrappers.py
  8.  
  9. from myapp import models
  10.  
  11.  
  12. class MyModel(models.MyModel):
  13.  
  14.     def f1(self):
  15.         pass
  16.     def f2(self):
  17.         pass
Lo cual me permite separar definición de funcionalidad. Sin embargo, a la hora de la verdad, myapp.wrappers.MyModel se convierte mágicamente en myapp.models.MyModel, y por tanto al intentar ejecutar f1 me da un AttributeError, pues el modelo no tiene ese método.
Mi pregunta es: ¿qué coj*#$@ está pasando ahí? ¿Se debe a que el modelo y el wrapper se llaman igual? ¿Hay algún fallo en mi razonamiento?
Saludos y gracias por la ayuda :)
__________________
" Getting older’s not been on my plans
but it’s never late, it’s never late enough for me to stay. "
Cigarettes - Russian Red