Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.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
Python “文档”对象不是可下标的Django_Python_Django - Fatal编程技术网

Python “文档”对象不是可下标的Django

Python “文档”对象不是可下标的Django,python,django,Python,Django,我在上传excel文件并保存该文件时遇到此错误 My model.py文件 class Document(models.Model): docfile = models.FileField(upload_to='documents/%Y/%m/%d') 在视图中,我正在将该文件保存到特定位置 views.py文件是 def excel(request): print "you in main" if request.method == 'POST': p

我在上传excel文件并保存该文件时遇到此错误

My model.py文件

class Document(models.Model):
    docfile = models.FileField(upload_to='documents/%Y/%m/%d')
在视图中,我正在将该文件保存到特定位置 views.py文件是

def excel(request):
    print "you in main"
    if request.method == 'POST':
        print "you in post"
        form = UploadFileForm(request.POST, request.FILES)
        if form.is_valid():
            newdoc = Document(docfile = request.FILES['docfile'])
            path = os.path.join(settings.MEDIA_ROOT, newdoc)
            print path
            print "you in"
            newdoc.save()

            wb = xlrd.open_workbook(path)
            sh = wb.sheet_by_index(0)
            c = 1
            while c < len(sh.col(0)):
                first = sh.col_values(0)[c]
                second = sh.col_values(1)[c]
                c=c+1
            return HttpResponseRedirect(reverse('upload.views.excel'))
    else:
        form = UploadFileForm() # A empty, unbound form
    documents = Document.objects.all()
    return render_to_response('property/list.html',{'documents': documents, 'form': form},context_instance=RequestContext(request))
请帮我解决这个问题

您的问题在这里:

path = os.path.join(settings.MEDIA_ROOT, newdoc)
^newdoc是一个模型实例,您不希望模型本身成为您路径的一部分-您希望上传的文件路径在那里,因此:

path = os.path.join(settings.MEDIA_ROOT, newdoc.docfile)

我得到的错误是'FieldFile'对象没有属性'filename',所以只需要newdoc.docfile,或者如果有合适的属性print dirnewdoc.docfile,则打印内容docfile
path = os.path.join(settings.MEDIA_ROOT, newdoc)
path = os.path.join(settings.MEDIA_ROOT, newdoc.docfile)