django 1.8如何在使用upload_to时从数据库中检索图像文件路径

时间:2017-02-09 22:27:31

标签: django

我的django模型中有一个图像文件。我在尝试使用 upload_to 强制输出目录时尝试检索图像的路径,但它没有返回正确的路径。

def signatures_path(instance, filename):
    return 'signatures/{}/{}'\
        .format(instance.id, filename)


class Designation(models.Model):
    designation = models.TextField()
    user = models.OneToOneField(User)
    signature = models.ImageField(upload_to=signatures_path,\
        blank=True, null=True, default=None, validators=[validate_png])


Designation.objects.filter(user__username=username).values_list('signature', flat=True)
[u'sig'jpg']


x = Designation.objects.get(user__username=username)
print x.signature.path
/home/me/myapp/myapp/media/sig.jpg

但我希望它是: /home/me/myapp/myapp/media/signature/None/sig.jpg

如何检索正确的路径? 请注意,有一个" "路径中的目录似乎没有存储在任何地方。

更新: 问题是因为我保存文件的方式。 我用它来保存它:

Designation.objects.filter(user__username=username).update(signature=signature)

当我将其更改为:

x=Designation.objects.get(user__username=username)
x.signature=signature
x.save()

然后它工作正常。

1 个答案:

答案 0 :(得分:1)

您应该使用print x.signature.url代替print x.signature.path。它返回文件的绝对路径。