-1
在appengine中,我使用此模型爲要上傳的視頻部署了Python代碼。視頻模型和ndb
我啓用了視頻上傳當視頻上傳時,它出現在數據存儲中的模型「視頻」的實例。我認爲這個類應該和ndb庫一起使用,而不是傳統的db-Model
,但是我還沒有學習ndb,我的模型相當複雜和引用。
class Video(db.Model):
reference = db.ReferenceProperty(Item,
collection_name='matched_videos', verbose_name='Title')
content = blobstore.BlobReferenceProperty()
title = db.StringProperty()
filename = db.StringProperty()
size = db.IntegerProperty()
added = db.DateTimeProperty(verbose_name='added', auto_now_add=True) # readonly
def get_video(self,video_id):
return Video.get_by_id(video_id)
然後,當用戶上傳視頻,我只是檢查,如果第一次上傳的視頻,否則它是普通的圖像。我發現appengine可以存儲ogv和mp4,但不是所有的視頻格式。存儲上傳的視頻在我的代碼中看起來如下所示。
for upload in self.get_uploads():
try:
#logging.info(blobstore.blobstore.BlobInfo(upload.key()).content_type)
content_type = blobstore.blobstore.BlobInfo(upload.key()).content_type
if 'video' in content_type and not ad.hasvideo:
vid = Video(reference=item)
vid.content = upload.key()
vid.title = blobstore.blobstore.BlobInfo(upload.key()).filename
vid.size = blobstore.blobstore.BlobInfo(upload.key()).size
tmp = upload.key()
vid.put()
item.hasvideo = True
item.videos.append(upload.key())
else:
img = Image(reference=ad)
img.primary_image = upload.key()
img.put()
item.hasimages = True
item.image_url = images.get_serving_url(str(upload.key()), size=640)
item.blobs.append(upload.key())
item.put()
counter = counter + 1
except Exception, e:
logging.error('There was an exception:%s' % str(e.message))
pass
然後查看視頻我使用此代碼。
該模型item
是由用戶發佈的項目的類。現在我的問題,如果我應該重寫它,而不是使用ndb
數據存儲?我在ndb存在之前就開始了這個項目,我意識到使用ndb似乎更好,但是如果我的類也不是ndb,我可以在mndb模型和non-ndb模型之間進行引用,還是必須同時遷移所有模型?