我一直在玩弄django-photologue了一段时间,而这个发现所有其他图像handlings一个伟大的替代应用程式在那里。

但有一件事,我也用django-cumulus推我上传到我的CDN,而不是我的本地计算机/服务器上运行它。

当我用imagekit,我总是可以通过一个upload_to='whatever'但我似乎不能与photologue要做到这一点,因为它自动插入的ImageField。我将如何去实现某种重写的?

此致

有帮助吗?

解决方案

我觉得你可以挂接到照片模式的pre_save信号,并改变upload_to场,就在该实例保存到数据库中。

看看这样的: http://docs.djangoproject.com/en/dev/topics/signals/

其他提示

设法找到它一个解决方法,但是这需要你做出photologue / models.py

的变化
if PHOTOLOGUE_PATH is not None:
    if callable(PHOTOLOGUE_PATH):
        get_storage_path = PHOTOLOGUE_PATH
    else:
        parts = PHOTOLOGUE_PATH.split('.')
        module_name = '.'.join(parts[:-1])
        module = __import__(module_name)
        get_storage_path = getattr(module, parts[-1])
else:
    def get_storage_path(instance, filename):
        dirname = 'photos'
        if hasattr(instance, 'upload_to'):
            if callable(instance.upload_to):
                dirname = instance.upload_to()
            else: dirname = instance.upload_to
        return os.path.join(PHOTOLOGUE_DIR, 
                        os.path.normpath( force_unicode(datetime.now().strftime(smart_str(dirname))) ), 
                        filename)

然后在你的应用程序模型执行以下操作:

class MyModel(ImageModel):
    text = ...
    name = ...

    def upload_to(self):
        return 'yourdirectorynamehere'

您可以使用设置PHOTOLOGUE_PATH提供自己的调用。定义这需要实例和文件名作为参数,然后返回你想要的任何一种方法。例如,在你的settings.py:

import photologue

...

def PHOTOLOGUE_PATH(instance, filename):
  folder = 'myphotos' # Add your logic here
  return os.path.join(photologue.models.PHOTOLOGUE_DIR, folder, filename)

据推测(虽然我没有测试过),你可以更多的照片实例发现(例如它涉及到什么其他情况下),并相应选择的文件夹。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top