उन्नयन पर Django 1.9, मैं अब चेतावनी"सबफील्डबेस को किस प्रकार से निपटने के लिए हटा दिया गया है। इसके बजाय Field.from_db_value का उपयोग करें।"
RemovedInDjango110Warning: SubfieldBase has been deprecated. Use Field.from_db_value instead.
मैं देख रहा हूँ जहाँ समस्या उत्पन्न होती है मिलता है। मेरे पास कुछ कस्टम फ़ील्ड परिभाषाएं हैं, और उनमें से मेरे पास __metaclass__ = models.SubfieldBase
है। उदाहरण के लिए,
class DurationField(models.FloatField):
__metaclass__ = models.SubfieldBase
def __init__(self, *args, **kwargs):
...
तो __metaclass__
बयान हटाई गई है, क्या मैं वास्तव में से बदलने के लिए माना जाता रहा हूँ?
क्या मैं इसे अभी बाहर लेता हूं और from_db_value
विधि को यहां उदाहरण में जोड़ता हूं: https://docs.djangoproject.com/en/1.9/howto/custom-model-fields/#converting-values-to-python-objects ?
और from_db_value
और to_python
कैसे भिन्न हैं? दोनों डेटाबेस डेटा को पायथन ऑब्जेक्ट में कनवर्ट करने लगते हैं?
यह बहुत अच्छा और व्यापक उत्तर है। @mjandrews: आपने इसे अंतिम उत्तर के रूप में क्यों चिह्नित नहीं किया है? – pt12lol
मैंने पाया है कि मेटाक्लास के बिना, 'to_python' को हमेशा वही नहीं कहा जाता है। उदाहरण के लिए, यदि आप किसी ऑब्जेक्ट का नया उदाहरण बनाते हैं और फिर कस्टम फ़ील्ड को पढ़ने का प्रयास करते हैं तो यह उन तरीकों को कॉल नहीं करेगा जहां मेटाक्लास के साथ यह विधि को कॉल करता है। –