2010-05-23 13 views
5

ऐसा लगता है कि StringListProperty केवल 500 वर्ण प्रत्येक, बस StringProperty की तरह ... अप करने के लिए तार इससे अधिक का समय तार स्टोर करने के लिए एक तरह से शामिल कर सकते हैंStringListProperty 500 चार तार (गूगल एप इंजन/अजगर) तक सीमित

वहाँ है ? मुझे उन्हें अनुक्रमित या कुछ भी करने की आवश्यकता नहीं है। मुझे जो चाहिए वह "टेक्स्टलिस्टप्रॉपर्टी" जैसा होगा, जहां सूची में प्रत्येक स्ट्रिंग कोई भी लंबाई हो सकती है और 500 वर्ण तक ही सीमित नहीं हो सकती है।

क्या मैं इस तरह की संपत्ति बना सकता हूं? या क्या आप विशेषज्ञ एक अलग दृष्टिकोण का सुझाव दे सकते हैं? शायद मुझे एक सादे सूची का उपयोग करना चाहिए और इसे ब्लॉब फ़ील्ड में अचार या अनपिक करना चाहिए, या ऐसा कुछ? मैं पाइथन और जीएई के लिए थोड़ा नया हूं और मैं परीक्षण और त्रुटि पर दिन बिताने के बजाय कुछ पॉइंटर्स की सराहना करता हूं ... धन्यवाद!

उत्तर

2

आप item_type के साथ एक सामान्यका उपयोग कर सकते हैं क्योंकि आपको (str, या unicode, या जो कुछ भी चाहिए)।

+2

दोनों str और यूनिकोड भी 500 वर्ण तक सीमित हैं:
यहाँ एक सरल उदाहरण है। लेकिन फिर मैंने db.Text के साथ एक प्रकार के रूप में प्रयास किया, और अब तक यह काम करता प्रतीत होता है। मुझे सही दिशा बताने के लिए धन्यवाद। – MarcoB

4

एलेक्स पहले बहुत पहले उत्तर दिया, लेकिन इस मामले में किसी और ही समस्या के साथ आता है:

तुम बस item_type db.Text के बराबर होता है (जैसा कि ओपी एक टिप्पणी में उल्लेख है)।

from google.appengine.ext import db 
class LargeTextList(db.Model): 
    large_text_list = db.ListProperty(item_type=db.Text) 

def post(self): 
    # get value from a POST request, 
    # split into list using some delimiter 
    # add to datastore 
    L = self.request.get('large_text_list').split() # your delimiter here 
    LTL = [db.Text(i) for i in L] 
    new = LargeTextList() 
    new.large_text_list = LTL 
    new.put() 

def get(self): 
    # return one to make sure it's working 
    query = LargeTextList.all() 
    results = query.fetch(limit=1) 
    self.render('index.html', 
      { 'results': results, 
       'title': 'LargeTextList Example', 
      }) 
+1

कोड के लिए धन्यवाद, यही रास्ता है। ध्यान में रखना एक बात यह है कि प्रत्येक असाइनमेंट को टाइप करने के लिए टाइपकास्ट होना चाहिए। टेक्स्ट या कंपाइलर अपवाद फेंक देगा। यहां तक ​​कि एक खाली स्ट्रिंग को असाइन करने के लिए, उदाहरण के लिए: object.text_list.append (db.Text ("")) – MarcoB

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