मुझे पता है कि यह बहुत बाद में है, लेकिन मुझे कुछ ऐसा करने की ज़रूरत है और मुझे बहुत कुछ नहीं मिला। मुझे कुछ स्रोत कोड here में दफन किया गया जवाब मिला, लेकिन एक उदाहरण क्लास-विधि भी लिखी जो पर्याप्त होगी।
class AfricanSwallow(Swallow):
@classmethod
def save_child_from_parent(cls, swallow, new_attrs):
"""
Inputs:
- swallow: instance of Swallow we want to create into AfricanSwallow
- new_attrs: dictionary of new attributes for AfricanSwallow
Adapted from:
https://github.com/lsaffre/lino/blob/master/lino/utils/mti.py
"""
parent_link_field = AfricanSwallow._meta.parents.get(swallow.__class__, None)
new_attrs[parent_link_field.name] = swallow
for field in swallow._meta.fields:
new_attrs[field.name] = getattr(swallow, field.name)
s = AfricanSwallow(**new_attrs)
s.save()
return s
मुझे पता नहीं लगा कि इस विधि के साथ काम करने के लिए मेरे फॉर्म सत्यापन को कैसे प्राप्त किया जाए; तो यह निश्चित रूप से और अधिक सुधार किया जा सकता है; शायद इसका मतलब है कि एक डेटाबेस रिफैक्टरिंग सबसे अच्छा दीर्घकालिक समाधान हो सकता है ...
हे - कमाल का जवाब। यह थोड़ी देर हो गया है क्योंकि मुझे इसकी आवश्यकता थी। स्वाभाविक रूप से, मैं उत्पादन स्थिति में _meta पर भरोसा करने के लिए थोड़ा अनिच्छुक हूं, लेकिन ऐसा जीवन है। धन्यवाद! – jMyles