【发布时间】:2015-10-07 12:47:07
【问题描述】:
我正在尝试创建一个动态文件夹来为每个用户存储一些 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()
文件已上传,但地址为:
图表/文档/{0}/email/2015_10_07_MOCK_DATA_2_qyt9xGe.csv
它没有得到 instance.owner.id 值。我尝试在添加 docfile 之前保存文档以尝试为对象设置所有者并获取 owner.id 值但没有成功。你能帮帮我吗?
非常感谢!
【问题讨论】:
-
请不要做
DemoUser.objects.get(id=request.user.id)之类的事情。request.user已经是那个确切的 DemoUser 实例,或者它根本不是 DemoUser 在这种情况下,通过 ID 查询是没有意义的。
标签: python django django-models django-views