2011-10-27 23 views
6

क्या इस तरह django कस्टम प्रॉपर्टी सेटर में कोई तरीका है?Django मॉडल फ़ील्ड। कस्टम फ़ील्ड मान सेटर

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

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

जेम्स Benett द्वारा यह लेख आपके howto पर एक अच्छा विचार देता है http://www.b-list.org/weblog/2006/एग/18/डीजेंगो-टिप्स-उपयोग-गुण-मॉडल-और-प्रबंधकों/ –

+0

संबंधित/डुप्ले: http://stackoverflow.com/questions/2898711/django-model-fields-getter-setter#11108157 – Matt

उत्तर

1

आप वास्तव में मूल्य मॉडल बचत पर सेट हो जाएगा, तो यह बेहतर है save() विधि (OT उपयोग pre_save संकेत) ओवरराइड करने के लिए।

+0

हां, मुझे पता है। लेकिन मुझे केवल संपत्तियों में दिलचस्पी है। –

1

किसी विधि के साथ क्या गलत है?

instance.set_password('my_pw') 

आप @property उपयोग कर सकते हैं setters परिभाषित करने के लिए: 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

क्षमा करें, लेकिन यह शुद्ध वर्ग गुणों के बारे में है। Django मॉडल के बारे में नहीं। –

+0

मुझे लगता है कि आप एक अलग संपत्ति हो सकती है। लेकिन भयानक विचार। +1! अगर आपको कोई समाधान मिल जाए तो मुझे बताएं। –

संबंधित मुद्दे