2010-05-23 26 views
5

Dường như StringListProperty chỉ có thể chứa các chuỗi lên đến 500 ký tự mỗi, giống như StringProperty ...StringListProperty giới hạn ở 500 chuỗi char (Google App Engine/Python)

Có cách nào để lưu trữ các chuỗi dài hơn ? Tôi không cần chúng được lập chỉ mục hay gì cả. Những gì tôi sẽ cần sẽ là một cái gì đó giống như một "TextListProperty", nơi mà mỗi chuỗi trong danh sách có thể được bất kỳ chiều dài và không giới hạn 500 ký tự.

Tôi có thể tạo thuộc tính như vậy không? Hoặc các chuyên gia có thể đề xuất một cách tiếp cận khác không? Có lẽ tôi nên sử dụng một danh sách đơn giản và nhặt/bỏ nó trong một lĩnh vực Blob, hoặc một cái gì đó như thế? Tôi là một chút mới để Python và GAE và tôi rất nhiều sẽ đánh giá cao một số con trỏ thay vì chi tiêu ngày dùng thử và lỗi ... cảm ơn!

Trả lời

2

Bạn có thể sử dụng số chung ListProperty với số item_type khi bạn yêu cầu (str hoặc unicode hoặc bất kỳ thứ gì).

+2

Cả hai đường và unicode cũng được giới hạn trong 500 ký tự. Nhưng sau đó tôi đã thử với db.Text như một loại, và cho đến nay nó có vẻ làm việc. Cám ơn đã chỉ tôi hướng đi đúng. – MarcoB

4

Alex đã trả lời lâu rồi, nhưng trong trường hợp người khác đến cùng với cùng một vấn đề:

Bạn chỉ muốn làm item_type bằng db.Text (như OP đề cập trong một bình luận).
Dưới đây là một ví dụ đơn giản:

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

Cảm ơn bạn đã viết mã, đó là cách để đi. Một điều cần lưu ý là mọi phép gán phải được nhập vào db.Text hoặc trình biên dịch sẽ ném một ngoại lệ. Ngay cả khi gán một chuỗi rỗng, bạn phải làm, ví dụ: object.text_list.append (db.Text ("")) – MarcoB

Các vấn đề liên quan