2
我有一個ListProperty(str)
:如何用字符串格式表示ListProperty(str)屬性?
class Item(db.Model):
tags = db.ListProperty(str)
有時候,我需要修改已經寫入到數據存儲的標籤,所以我創建了一個編輯頁面:
class EditItem(webapp.RequestHandler):
def get(self):
self.response.out.write("""<div>
<form name="submit_form" action="/edititemhandler" method="post">
url: <input type="text" name="url" size=50><br />
<input type="submit" value="submit">
</form></div>""")
這種處理形式:
class EditItemHandler(webapp.RequestHandler):
def post(self):
query = Item.all()
query.filter("url =", self.request.get("url"))
e = query.get()
self.response.out.write("""
<form name="submit_form" action="/edititemhandlerhandler" method="post">
tags: <input type="text" name="tags" size=50 value="%s"> <br />
[other values]
...
<input type="submit" value="submit">
</form> """ % (e.tags, ....))
我編輯標籤之後,我試着寫new_tags
回數據庫:
class EditItemHandlerHandler(webapp.RequestHandler):
def post(self):
query = Item.all()
query.filter("url =", self.request.get("url"))
item = query.get()
logging.info("TAGS %s" % self.request.get("tags"))
new_tags = self.request.get("tags")
item.tags = new_tags
[other items]
...
item.put()
但是這給
BadValueError('Property %s must be a list' % self.name)
BadValueError: Property tags must be a list
但logging.info
顯示self.request.get("tags")
看起來像一個列表:
TAGS [u'speaking', u'glam']
如果我做
item.tags = [new_tags]
把new_tags
進入名單,我得到
"[u'presidential', u'glam', u'family']"
它看起來不像列表,但看起來像一個字符串。
那麼,如何使用%s格式化列表元素,使其保持列表?謝謝。
更新
我想,我需要的標籤列表轉換爲字符串更新前,然後將其轉換成列表:
>>> tag_list = [u'formal', u'flag', u'photo']
>>> tag_list_as_string = str(" ".join(tag_list))
>>> tag_list_as_string
'formal flag photo'
>>> #edit tags
>>> tag_list_as_string = 'formal flag photo newtag'
>>> new_tag_list = tag_list_as_string.split(" ")
>>> new_tag_list
['formal', 'flag', 'photo', 'newtag']
>>>
你知道我怎麼可以用逗號拿到tag_list_as_string
,這樣,
'formal, flag, photo'
,而不是像這樣
'formal flag photo'
感謝
不要使用'的ListProperty(STR)` - 使用`StringListProperty()`。就目前而言,您只能存儲字節字符串,這會排除除前127個代碼點('ASCII')之外的所有unicode。同樣,不要使用str()函數來將東西串聯起來。 – 2011-01-30 23:41:19
爲了將來的參考,如果您的問題編輯會大幅改變所需答案的類型,請考慮提出一個新問題*而不是*編輯當前問題,您無法爲以前版本和問題的最終版本選擇最佳答案。 – Will 2011-01-31 12:41:41