首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >django-photologue upload_to

django-photologue upload_to
EN

Stack Overflow用户
提问于 2010-09-02 16:57:56
回答 3查看 793关注 0票数 2

我已经使用django-photologue有一段时间了,我发现这是所有其他图像处理应用程序的一个很好的替代方案。

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

当我使用imagekit时,我总是可以传递一个upload_to='whatever',但是我似乎不能用photologue来做到这一点,因为它会自动插入imagefield。我该如何实现某种覆盖呢?

问候

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-09-03 06:08:54

我认为您可以挂钩到Photo模型的pre_save信号,并在实例保存到数据库之前更改upload_to字段。

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

票数 1
EN

Stack Overflow用户

发布于 2010-09-03 14:40:12

我设法找到了一种解决方法,但是这需要您在photologue/models.py中进行更改

代码语言:javascript
复制
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)

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

代码语言:javascript
复制
class MyModel(ImageModel):
    text = ...
    name = ...

    def upload_to(self):
        return 'yourdirectorynamehere'
票数 0
EN

Stack Overflow用户

发布于 2011-04-06 23:57:48

您可以使用设置PHOTOLOGUE_PATH来提供您自己的callable。定义一个以instance和filename为参数的方法,然后返回您想要的任何内容。例如,在您的settings.py中:

代码语言:javascript
复制
import photologue

...

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

想必(虽然我还没有测试过这个),你可以找到更多关于照片实例的信息(例如,它与什么其他实例相关),并相应地选择文件夹。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3625555

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档