Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django每个用户上载文件关系错误_Django_Django Models_Django File Upload - Fatal编程技术网

Django每个用户上载文件关系错误

Django每个用户上载文件关系错误,django,django-models,django-file-upload,Django,Django Models,Django File Upload,我正在制作一个应用程序,它需要用户上传一些文件。我想将所有文件存储在一个username文件夹中(以后可能会将其移到项目文件夹之外,但这是另一回事) 首先我做了一些测试,我举了这个例子 它就是这样工作的,所以我进入了下一步 我检查了以下问题: My current models.py: # models.py from django.db import models from django.contrib.auth.models import User import os def get

我正在制作一个应用程序,它需要用户上传一些文件。我想将所有文件存储在一个username文件夹中(以后可能会将其移到项目文件夹之外,但这是另一回事)

首先我做了一些测试,我举了这个例子

它就是这样工作的,所以我进入了下一步

我检查了以下问题:

My current models.py:

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

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

class Document(models.Model):
    owner = models.ForeignKey(User)
    docfile = models.FileField(upload_to=get_upload_path)
我的观点

@login_required
def list(request):
    # Handle file upload
    if request.method == 'POST':
        form = DocumentForm(request.POST, request.FILES)
        if form.is_valid():
            newdoc = Document(docfile = request.FILES['docfile'])
            newdoc.save()

            # Redirect to the document list after POST
            return HttpResponseRedirect(reverse('myapp.views.list'))
    else:
        form = DocumentForm() # A empty, unbound form

    # Load documents for the list page
    documents = Document.objects.all()

    # Render list page with the documents and the form
    return render_to_response(
        'myapp/list.html',
        {'documents': documents, 'form': form},
        context_instance=RequestContext(request)
    )
所有被接受的答案都会导致相同的解决方案。但我在instance.owner中遇到一个错误:

django.contrib.auth.models.DoesNotExist
DoesNotExist
raise self.field.rel.to.DoesNotExist
使用werkzeug debbuger:

>>> instance
<Document: Document object>
>>> instance.owner
Traceback (most recent call last):

File "<debugger>", line 1, in <module>
instance.owner
File "C:\Python27\lib\site-packages\django\db\models\fields\related.py", line 343,     in    __get__
raise self.field.rel.to.DoesNotExist
DoesNotExist
>>实例
>>>instance.owner
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
instance.owner
文件“C:\Python27\lib\site packages\django\db\models\fields\related.py”,第343行,在__
将self.field.rel.to.DoesNotExist提升
实干家
我错过了什么


非常感谢。

您正在尝试将
文档
对象保存为:

newdoc = Document(docfile = request.FILES['docfile'])
newdoc.save()
但是您没有为它设置
owner
,您在
get\u upload\u path
方法
instance.owner
未定义/设置,并且
instance.owner.username
将失败

您可以更改“另存为”:

newdoc = Document(docfile = request.FILES['docfile'])
newdoc.owner = request.user #set owner
newdoc.save()
我不确定,您的
文档表单是什么。但是如果它也有
owner
字段,那么您可以直接保存它,而不是单独创建
newdoc
,如下所示:

...
if form.is_valid():
    newdoc = form.save()
...

哦,天哪,这是个愚蠢的错误,我没看到。它现在似乎起作用了。非常感谢你。