[pyar] Método en Modelo Django

xavier lesa xavierlesa en gmail.com
Lun Ago 8 17:43:58 ART 2011


Claro porque self lo manda el modelo sin preguntar, entonces si vos se lo
forsas en la llamada,

    imagen = obtener_imagen_principal(self)

python acá entiende que hay un objeto self que tiene que meter en esa
función.

ponelo así:

    imagen = obtener_imagen_principal()

Abrazo


Xavier Lesa
Production Manager

tel: +011 4823-7531 | cel: +011 15 3868-3918

web: http://link-b.com | mail: xavier en link-b.com | xavierlesa en gmail.com
gtalk: xavier en link-b.com | skype: xavierlesa



2011/8/8 matias benedetto <matias.benedetto en gmail.com>

>
> Sip, es lo mismo que hagas esto,
>>
>> class Producto(models.Model):
>>
>>     @property
>>     def imagen(self):
>>
>>         try:
>>             mm = Multimedia.objects.get(producto=self.id, principal=1)
>>         except:
>>             mm = Multimedia.objects.filter(producto=self.id)[0]
>>
>>         return mm
>>
>>      nombre = models.CharField(max_length=255)
>>
>
>
> Me sigue tirando el mismo error, no entiendo por qué. En el def
> __unicode__(self): funciona bien, porque en el otro metodo no?
> models.py", line 42, in Producto
>     imagen = obtener_imagen_principal(self)
>
> NameError: name 'self' is not defined
>
> copio los dos modelos completo por si ayuda:
>
>
> class Producto(models.Model):
>     def __unicode__(self):
>         return str(self.id) + " | " + self.nombre
>
>     @property
>
>     def obtener_imagen_principal(self):
>      try:
>          return self.multimedia_set.get(principal=1)
>
>      except Producto.DoesNotExit:
>          return self.multimedia_set.all()[0] # cualquiera
>
>     nombre = models.CharField(max_length=255)
>     sku = models.CharField(max_length=50)
>     descripccion = models.TextField(blank=True, null=True, default=None)
>     peso = models.CharField(max_length=5)
>     material = models.CharField(max_length=20)
>     estado = models.CharField(max_length=2, default=1) #0 sin stock, 1
> stock normal, 2 poco stock
>     visible = models.CharField(max_length=2, default=1) #0 no visible, 1
> visible
>     categorias = models.ManyToManyField(Categoria)
>     stock = models.CharField(max_length=10)
>     fecha = models.DateTimeField(auto_now_add=True)
>     modificado = models.DateTimeField(auto_now=True)
>     visto = models.IntegerField(default=0)
>
>     imagen = obtener_imagen_principal(self)
>
>
>
> class Multimedia (models.Model):
>     def __unicode__(self):
>         return str(self.id)+ " | " + " IdImg " + str(self.producto.id) + "
> | " + self.producto.nombre
>
>     producto = models.ForeignKey(Producto)
>     tipo = models.CharField(max_length=2, default=0)#0 imagen, 1 video
>     urloriginal =  models.CharField(max_length=255, null=True, blank=True)
>     principal = models.BooleanField(default = False)
>      alt = models.CharField(max_length=255, null=True, blank=True)
>
>     imagen = ImageWithThumbsField(name="imagen",
> upload_to='imagenes_productos',
> sizes=((50,50),(100,100),(125,125),(230,230)))
>
>
> _______________________________________________
> 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/20110808/92474839/attachment.html>


More information about the pyar mailing list