如何在django中为每个用户创建单独的文件夹,让用户上传该文件夹中的文件?

时间:2015-06-06 06:20:53

标签: django python-2.7

我想让每个用户上传一个文本文件,以便他只能看到他上传的文件。我还希望他上传的文件存储在他自己的文件夹中,如home / ubuntu / documents / username /

我的models.py看起来像这样 -

from django.db import models
from django.contrib.auth.models import User
import os

class UserProfile(models.Model):

user = models.OneToOneField(User)

    def __unicode__(self):
        return self.user.username


def get_upload_path(instance, filename):
    return os.path.join('documents', instance.owner.username, filename)

class Document(models.Model):
    docfile = models.FileField(upload_to=get_upload_path)

1 个答案:

答案 0 :(得分:3)

修改

对最后一次失礼抱歉。

def get_upload_path(instance, filename):
    return 'documents/{0}/{1}'.format(instance.user.username, filename)

class Document(models.Model):
    user = models.ForeignKey(User, null=True)
    docfile = models.FileField(upload_to=get_upload_path)

另外,see documentation为另一个例子。

备注

  1. 在设置文件中配置MEDIA_ROOT路径。这是存储文件的地方。
  2. 不要忘记编写另一种方法,只要他/她更改用户名,就会更改用户文件夹的名称。
  3. 上面第2点的替代方法是使用pk而不是用户名。但它取决于你。