2013-09-08 2 views
1

У меня есть объект, который состоит из String и BlobReferenceProperty:Не удается получить пятно с помощью BlobReferenceProperty

class NameKeyPair(db.Model): 
    human_readable_name = db.StringProperty() 
    blobkey = blobstore.BlobReferenceProperty() 

Когда я сохранить текст в сгустке, я поставил BlobKey так:

... 
#Create the file 
file_name = files.blobstore.create(mime_type='text/plain') 

#Open the file and write to it 
with files.open(file_name, 'a') as f: 
    f.write(data.encode('utf8')) 

#Finalize the file 
files.finalize(file_name) 

#Get the file's blob key 
blobkey = files.blobstore.get_blob_key(file_name) 

#store it in DB 
nameKeyPair = NameKeyPair() 
nameKeyPair.blobkey = blobkey 
nameKeyPair.human_readable_name = human_readable_name 
nameKeyPair.put() 
... 

human_readable_name - это строка, которую я посылаю пользователю. Теперь, когда пользователь отправляет мне имя обратно, я хочу, чтобы вернуть текст сгустка:

... 
human_readable_name = self.request.get('human_readable_name') 
q = NameKeyPair.all() 
q.filter("human_readable_name =", human_readable_name) 

blobkey = "" 
for p in q.run(limit=1): 
    blobkey = p.blobkey 

blob_info = blobstore.BlobInfo.get(blobkey) 
self.send_blob(blob_info) 

Это не работает. Apppot просто говорит «ошибка сервера».

Если я распечатаю свою переменную blobkey, она говорит <google.appengine.ext.blobstore.blobstore.BlobInfo object at 0x54dbe8bfa91b53a0> Не должно быть blobkey?

Эта страница: https://developers.google.com/appengine/docs/python/blobstore/blobkeyclass говорит: «Вы можете получить объект BlobInfo с помощью BlobKey, передав ключ методу класса BlobInfo.get()».

Вот почему я передал свой blobkey в BlobInfo.get. Но если мой «blobkey» на самом деле уже является объектом BlobInfo, возможно, мне не нужно это делать. Я попытался передать его непосредственно send_blob вместо:

self.send_blob(blobkey) 

Но я получаю тот же результат.

И на этой странице: https://developers.google.com/appengine/docs/python/blobstore/, которая показывает пример кода: self.send_blob(blob_info) Кажется, что это должно быть все, что мне нужно ... Но это просто не работает. Есть идеи?

+0

Есть ли более подробная ошибка в журнале? – Greg

ответ

0

Я не могу комментировать, но попробуйте использовать [объект] .key() Я нахожу это немного тупой, когда ключ объекта и, когда это строка

Смежные вопросы