【问题标题】:Creating a dynamic path when I upload images上传图片时创建动态路径
【发布时间】:2011-10-21 05:10:41
【问题描述】:

我正在尝试为我的用户上传图片创建动态路径。它的工作原理是这样的:

查看:

photo = Photo(...)
photo.save()

photo.original.save(filename, content)

型号:

album = models.ForeignKey(Album)
original = models.ImageField(upload_to="photos/%s/o" % str(album.id), max_length=200)

但是当我尝试这样做时,Django 说不行。

Exception Value:    
'ForeignKey' object has no attribute 'id'

如何以这种方式访问​​ ForeignKey 对象的模型成员?

谢谢。

【问题讨论】:

    标签: python django foreign-keys models django-models


    【解决方案1】:

    使用回调(可调用):https://docs.djangoproject.com/en/dev/ref/models/fields/#django.db.models.FileField.upload_to

    def fancy_path(instance, filename):
        return 'fancy_path/file_%s.xml' % self.instance.album.id
    
    original = models.ImageField(upload_to=fancy_path, max_length=200)
    

    【讨论】:

    • 就是这样。 @Willian 一针见血。您唯一需要确保的是,您的对象在处理图像之前 具有该专辑 FK 的值。
    • 是的,我对那部分很小心,因此上面的双重保存。
    猜你喜欢
    • 2019-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-27
    • 2012-04-30
    相关资源
    最近更新 更多