2011-10-27 21 views
6

¿Hay alguna manera de hacerlo en el generador de propiedades personalizado django de esta manera?campos modelo Django. Configurador de valor de campo personalizado

class MyModel(models.Model): 
    myfield = models.CharField(length = 250) 

    @myfield.setter 
    def set_password(self, value): 
     self.password = encrypt(value) 
+1

este artículo de James Benett le da una buena idea sobre howto http://www.b-list.org/weblog/2006/ago/18/django-tips-using-properties-models-and-managers/ –

+0

relacionado/dupe: http://stackoverflow.com/questions/2898711/django-model-fields-getter-setter#11108157 – Matt

Respuesta

1

que realmente va a establecer el valor en salvar el modelo, por lo que es mejor para anular save() método (OT uso pre_save señal).

+0

Sí, Lo sé. Pero me interesan solo las propiedades. –

1

¿Qué pasa con un método?

instance.set_password('my_pw') 

Se puede utilizar para definir @property set: http://docs.python.org/library/functions.html#property

### Pasted from docs 

class C(object): 
    def __init__(self): 
     self._x = None 

    @property 
    def x(self): 
     """I'm the 'x' property.""" 
     return self._x 

    @x.setter 
    def x(self, value): 
     self._x = value 

    @x.deleter 
    def x(self): 
     del self._x 
+0

Lo sentimos, pero se trata de propiedades de clase pura. No sobre los modelos django. –

+0

Supongo que podría tener una propiedad diferente. Pero idea genial. +1! Déjeme saber si usted encuentra una solución. –

Cuestiones relacionadas