2013-03-28 7 views
6

मैं समाचार सामग्री में सामग्री को अन्य सामग्री प्रकारों में कॉपी करने की कोशिश कर रहा हूं जो मैंने लिखा था। मेरी स्क्रिप्ट में मेरे पास news आइटम और project आइटम है। दूसरा, project, एक सामग्री प्रकार है जिसे निपुणता का उपयोग करके परिभाषित किया गया है। यह आश्चर्यजनक होगा अगर मैं छवि और शरीर के पाठ को news से project पर अगली बार कॉपी कर सकता हूं।आर्केटाइप समाचार वस्तुओं को निपुणता सामग्री प्रकारों में माइग्रेट करना

project.text = news.text 
project.image = news.image 

कहाँ पाठ और छवि RichText और NamedBlobImage रूप project स्कीमा में परिभाषित कर रहे हैं। मुझे नहीं पता कि समाचार वस्तु में गुण कैसे हैं। मुझे केवल इतना पता है कि मैं getImage() विधि का उपयोग कर समाचार आइटम में छवि प्राप्त कर सकता हूं लेकिन प्रोजेक्ट को प्रस्तुत करते समय प्रोजेक्ट को असाइन करना एक त्रुटि उत्पन्न करता है।

तो मैं अपने बुनियादी सवालों को हल करने के कुछ संकेत की जरूरत है:

  1. मैं मूलरूप सामग्री प्रकार के लिए विशेषता नाम कैसे पता कर सकते हैं। उदाहरण के लिए, इस मामले में मुझे समाचार वस्तु के बॉडी टेक्स्ट के लिए विशेषता का नाम जानना होगा।

  2. मैं एक समाचार वस्तु से जुड़ी एक छवि को एक निपुणता सामग्री प्रकार से जुड़ी छवि में कैसे परिवर्तित कर सकता हूं।

उत्तर

6
  1. आप क्षेत्र Archetypes स्कीमा से मूल्यों को पुनः प्राप्त करने के अधिमानतः कच्चे मूल्यों इस मामले में उपयोग करते हैं,। आप वस्तु तो बुला या तो .get() या .getRaw() में पारित:

    schema = news.Schema() 
    news = schema.getField('text').getRaw(news) 
    imageField = schema.getField('image') 
    image = imageField.getRaw(news) 
    content_type = imageField.getContentType(news) 
    filename = imageField.getFilename(news) 
    
  2. वस्तु ImageField.getRaw() कॉल द्वारा वापस मूल रूप से एक OFS.Image उदाहरण है। कच्चे छवि डेटा प्राप्त करने के लिए आप str() पर कॉल कर सकते हैं।

    करने के लिए छवि वस्तु निर्धारित करते हैं, क्या तुम सच में स्कीमा से छवि क्षेत्र हो और यह एक कारखाने के रूप में ._type विशेषता है का उपयोग करना चाहते:

    project.image = IProjectInterface.image._type(str(image), 
        contentType=content_type, filename=filename) 
    

    सामग्री यहाँ लिखें वैकल्पिक है; NamedImage और NamedBlobImage प्रकार सामग्री प्रकार को स्वचालित रूप से भी बाहर निकाल देते हैं।

+0

डैंक जे वेल, मार्टिजन! –

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