python - 如何在django模型中获取当前用户?

标签 python django django-models django-views

我正在尝试创建一个动态文件夹来为每个用户存储一些 csv 文件。 我有 DemoUser 和文档。这是一个1对N的关系。 我想将用户的所有文档存储在其文件夹中,并以用户 ID 命名。

但是我不知道该怎么做。我无法获取所有者姓名。

这是我的代码:

models.py:

def get_upload_path(instance, filename):
    now = timezone.now().strftime("%Y_%m_%d")
    if(instance.owner.id is not None):
        return 'graphs/documents/{0}/email/' + now +'_{1}'.format(instance.owner.id, filename)

class Document(models.Model):
    docfile = models.FileField(upload_to=get_upload_path, validators=[import_document_validator])
    owner = models.ForeignKey(DemoUser)
    date_published = models.DateTimeField(_('date published'), default=timezone.now)

views.py:

if request.method == 'POST':
    form = DocumentForm(request.POST, request.FILES)
    if form.is_valid():
        newdoc = Document(owner=DemoUser.objects.get(id=request.user.id))
        newdoc.save()
        newdoc.docfile = request.FILES['docfile']
        newdoc.save()

文件已上传,但地址为:

graphs/documents/{0}/email/2015_10_07_MOCK_DATA_2_qyt9xGe.csv

它没有获取instance.owner.id值。我尝试在添加文档文件之前保存文档,以尝试为对象设置所有者并获取owner.id 值,但没有成功。你能帮我吗?

非常感谢!

最佳答案

应该是:

return 'graphs/documents/{0}/email/{1}_{2}'.format(instance.owner.id, now, filename)

关于python - 如何在django模型中获取当前用户?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32992618/

相关文章:

python - 运行 py.test 时的 .coveragerc 文件位置

python - 基本 Python、Django、DRY - 从(模型)类调用方法

python - Model.clean() 与 Model.clean_fields()

django - 获取外键和相应的字段值到模型中

python - Django : Message system, 请求

python - 在 python 中捕获 IOError

python - 在Python中通过微小的改变来覆盖方法的正确方法

Python 覆盖最后一行而不追加

django - 使用 Django 的密码重置通知用户电子邮件无效

python - dyno falls sleep django heroku postgresql 后找不到图像