2010-08-27 2 views
8

Итак, я решил переписать мою галерею изображений из-за новой высококачественной картинки. Это означало использование Blobstore, которого я никогда раньше не использовал. Это казалось достаточно простым, пока я не попытался сохранить BlobKey в моей модели.Хранение BlobKey в DataStore с движком приложения

Как я могу хранить ссылку на blobstorekey в модели? Должен ли я использовать строку или использовать какое-то особое свойство, о котором я не знаю? У меня есть эта модель

class Photo(db.Model): 
date = db.DateTimeProperty(auto_now_add=True) 
title = db.StringProperty() 
blobkey = db.StringProperty() 
photoalbum = db.ReferenceProperty(PhotoAlbum, collection_name='photos') 

И я получаю эту ошибку: BlobKey собственности должны быть ул или юникода экземпляр, а не BlobKey

Конечно, я новичок в приложении двигатель, но это первая главная стена Я ударил еще. Углубляются по всему миру без каких-либо успехов.

ответ

1

Вместо db.StringProperty() вы должны использовать db.blobstore.BlobReferenceProperty (я думаю)

Я все еще пытаюсь понять эту вещь, как хорошо, но думал, я бы разместить некоторые идеи ,

Вот ссылки на страницы с помощью Google: http://code.google.com/appengine/docs/python/datastore/typesandpropertyclasses.html

http://code.google.com/appengine/docs/python/datastore/typesandpropertyclasses.html#BlobReferenceProperty

+0

Я буду работать в этой части за труд выходных дней .. то есть, если моя жена не выйдет из ноутбука из окна (выйдя замуж в субботу!). – Sologoub

11

Следующие работы для меня. Обратите внимание, что класс - это blobstore.blobstore, а не просто blobstore.

Модель:

from google.appengine.ext.blobstore import blobstore 

class Photo(db.Model): 
    imageblob = blobstore.BlobReferenceProperty() 

Установите свойство:

from google.appengine.api import images 
from google.appengine.api import blobstore 
from google.appengine.ext.webapp import blobstore_handlers 

class UploadHandler(blobstore_handlers.BlobstoreUploadHandler): 
    def post(self): 
    upload_files = self.get_uploads('file') # 'file' is file upload field in the form 
    blob_info = upload_files[0] 
    entity = models.db.get(self.request.get('id')) 
    entity.imageblob = blob_info.key() 

Получить свойство:

image_url = images.get_serving_url(str(photo.imageblob.key())) 
+0

Спасибо, что сэр. Попробуй это. –

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