我一直在玩django-photologue
一段时间,并发现这是其他所有图片处理应用的绝佳选择。
但有一点,我也使用django-cumulus
将我的上传内容推送到我的CDN,而不是在本地计算机/服务器上运行。
当我使用imagekit时,我总是可以传递upload_to='whatever'
,但我似乎无法使用photologue执行此操作,因为它会自动插入图像字段。我将如何实现某种覆盖?
此致
答案 0 :(得分:1)
我认为您可以挂钩Photo模型的pre_save信号,并在实例保存到数据库之前更改upload_to字段。
答案 1 :(得分:0)
管理为其找到解决方法,但是这需要您在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'
答案 2 :(得分:0)
您可以使用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)
据推测(虽然我没有对此进行过测试),您可以找到有关Photo实例的更多信息(例如与其相关的其他实例)并相应地选择文件夹。