Python Django文件为每个用户将保存传输到新文件

Python Django文件为每个用户将保存传输到新文件,python,django,Python,Django,我正在尝试使用Django filetransfer上传文件,我想知道如何导入用户名作为上传保存的文件名。现在我正在使用User.username,但这是无效的。我想最大的问题是如何从models.py访问用户的属性。下面是my models.py: from django.db import models from django.contrib.auth.models import User, UserManager class UploadModel(User,models.Model):

我正在尝试使用Django filetransfer上传文件,我想知道如何导入用户名作为上传保存的文件名。现在我正在使用User.username,但这是无效的。我想最大的问题是如何从models.py访问用户的属性。下面是my models.py:

from django.db import models
from django.contrib.auth.models import User, UserManager

class UploadModel(User,models.Model):
    title = models.CharField(max_length=64, blank=True)
    user = models.ForeignKey(User)
    file = models.FileField(upload_to='./uploads/'+str(User.username))


    @property
    def filename(self):
    return self.file.name.rsplit('/', 1)[-1]
更新: app/upload/models.py

from django.db import models
from django.contrib.auth.models import User, UserManager

def uploadmodel_file_upload_to(instance, filename):
    return 'uploads/%s/%s' % (instance.user.username, filename)

class UploadModel(models.Model):
    user = models.ForeignKey('auth.user')
    file = models.FileField(upload_to=uploadmodel_file_upload_to)
TemplateSyntaxError位于/上载 呈现时捕获到数据库错误:列上载\u上载模型。用户\u id不存在
第1行:选择“upload\u uploadmodel”。“id”,“upload\u uploadmodel”。“用户…”在Python解析models.py代码时,模型属性是正式定义的。您应该使用回调来使用与用户相关的实例生成上传文件路径,例如:

def uploadmodel_file_upload_to(instance, filename):
    return 'uploads/%s/%s' % (instance.user.username, filename)

class UploadModel(models.Model):
    user = models.ForeignKey('auth.user')
    file = models.FileField(upload_to=uploadmodel_file_upload_to)

Python在解析models.py代码时正式定义了模型属性。您应该使用对的回调,以便使用与用户相关的实例生成上载文件路径,例如:

def uploadmodel_file_upload_to(instance, filename):
    return 'uploads/%s/%s' % (instance.user.username, filename)

class UploadModel(models.Model):
    user = models.ForeignKey('auth.user')
    file = models.FileField(upload_to=uploadmodel_file_upload_to)

为什么UploadModel从用户继承?为什么UploadModel从用户继承?我将该代码放在models.py中,并在控制台中得到“NameError:name'UploadModel\u file\u upload\u to'未定义”。您没有正确粘贴它(我测试了此代码)。请发布更新后的models.py和回溯。可能您没有将uploadmodel_file_upload_粘贴到引用它的文件字段定义之前的定义。因此,NameError.Edited。感谢您的帮助。如果我遗漏了一些明显的内容,请道歉。好的,请删除uploadmodel表并再次运行syncdb,或者返回旧代码并0)在uploadmodel类之前将uploadmodel_file_upload_to的定义粘贴到您的代码中,1)将文件字段的upload_to值更改为uploadmodel_file_upload_to。(我问为什么您的模型继承自用户[听起来不是很好],但您没有回答)在我的代码中,我修复了你的模型,它没有任何意义,也没有在Django 1.3.1中验证。好的,它正在运行,但它允许我从网站上的每个用户中进行选择。有没有办法让它自动保存到标有登录用户用户名的文件夹中?我将该代码放在models.py中并获得“NameError:控制台中未定义名称“uploadmodel\u file\u upload\u to”。您没有正确粘贴它(我测试了此代码)。请发布更新后的models.py和回溯。可能您没有将uploadmodel_file_upload_粘贴到引用它的文件字段定义之前的定义。因此,NameError.Edited。感谢您的帮助。如果我遗漏了一些明显的内容,请道歉。好的,请删除uploadmodel表并再次运行syncdb,或者返回旧代码并0)在uploadmodel类之前将uploadmodel_file_upload_to的定义粘贴到您的代码中,1)将文件字段的upload_to值更改为uploadmodel_file_upload_to。(我问为什么您的模型继承自用户[听起来不是很好],但您没有回答)在我的代码中,我修复了你的模型,它没有任何意义,也没有在Django 1.3.1中验证。好的,它正在运行,但它允许我从站点上的每个用户中进行选择。有没有办法让它自动保存到标有登录用户用户名的文件夹中?