如何让谷歌应用引擎支持django的ImageField?

Avi*_*Raj 10 python django google-app-engine

目前我正在开发一款运行在Google应用引擎顶部的django应用.模型领域之一看起来像,

picture = models.ImageField()
Run Code Online (Sandbox Code Playgroud)

但它在保存特定模型时显示以下错误

  File "/django_projects/cityguide-backend/src/lib/django/db/models/fields/files.py", line 93, in save
    self.name = self.storage.save(name, content, max_length=self.field.max_length)
  File "/django_projects/cityguide-backend/src/lib/django/core/files/storage.py", line 63, in save
    name = self._save(name, content)
  File "/django_projects/cityguide-backend/src/lib/django/core/files/storage.py", line 248, in _save
    fd = os.open(full_path, flags, 0o666)
  File "/google_appengine/google/appengine/tools/devappserver2/python/stubs.py", line 73, in fake_open
    raise OSError(errno.EROFS, 'Read-only file system', filename)
OSError: [Errno 30] Read-only file system: u'/django_projects/backend/src/Screenshot_from_2014-04-18_190527.png'
Run Code Online (Sandbox Code Playgroud)

经过一些研究后我发现,GAE不支持对文件系统进行写操作.我想我需要使用GAE blobstore或Google Cloud存储.但我不知道如何将这些与django的模型整合在一起.

Ada*_*dam 5

具体来说,Django默认情况下不支持App Engine的Cloud Storage或Datastore,并要求自定义存储提供商与之合作。以下是Google官方文档涵盖的解决方案:

  • 支持App Engine数据存储区的Django非相关性。另请参阅Cloud Platform文档中的相关文章
  • 如果您希望将CloudSQL或外部MySQL数据库用作后端,则可以按照本指南使用django.db.backends.mysql模块。

还有以下非官方项目:

如果您想使用Cloud Storage来实现自己的存储提供商,则可以参考django-appengine-toolkit中的storage.py