如何将django FileField保存到用户文件夹?

Stu*_*xon 3 python django upload django-models

我有这样的模特


def upload_location(instance, filename):
    return 'validate/%s/builds/%s' % (get_current_user(), filename) 

class MidletPair(models.Model):
    jad_file = models.FileField(upload_to = upload_location)
    jar_file = models.FileField(upload_to = upload_location)
    upload_to=tempfile.gettempdir()

如何在upload_location()中获取当前用户...?

旁注:看起来django的东西令人困惑,因为网上有很多前1.0的东西.

Dan*_*man 8

当前用户存储在请求对象中,除非您从其他地方传入,否则无法在模型方法中获取它 - 您无法在upload_to函数中执行此操作.

因此,您需要以不同的方式处理此问题 - 我建议您在表单级别进行此操作.您可以将请求对象传递到表单的__init__方法中,并将其存储在实例属性中,您可以在自定义上载处理程序中访问它.有关上传处理程序的文档,请查看此处.


小智 5

如果您在模型中添加了用户字段,并在执行上载之前设置了该属性,那么您可以通过instance属性将用户输入upload_location函数.