Django 在文件上载时获取“内置函数”或“方法”对象不可编辑

Django 在文件上载时获取“内置函数”或“方法”对象不可编辑,django,file-upload,Django,File Upload,我无法上传文件。我越来越 类型错误内置函数或方法对象不可编辑 models.py forms.py views.py 很难说问题出在哪里,但我认为以下代码行是主要问题: newdoc.resume =Upload(resume = request.FILES['resume']) 在保存整个模型实例之前,必须在文件字段中显式保存文件。此外,如果您的一个模型中有一个ForeignKey字段,并且希望为其分配另一个模型的实例,请在分配之前先保存该实例。在不了解你的搜索者模型的情况下,我所能做的就是

我无法上传文件。我越来越

类型错误内置函数或方法对象不可编辑

models.py

forms.py

views.py


很难说问题出在哪里,但我认为以下代码行是主要问题:

newdoc.resume =Upload(resume = request.FILES['resume'])
在保存整个模型实例之前,必须在文件字段中显式保存文件。此外,如果您的一个模型中有一个ForeignKey字段,并且希望为其分配另一个模型的实例,请在分配之前先保存该实例。在不了解你的搜索者模型的情况下,我所能做的就是猜测什么可能对你有帮助。以下内容可能会帮助您开始:

your_file = request.FILES['resume']
upload_instance = Upload()
upload_instance.resume.save(name=your_file.name, content=your_file, save=False)
upload_instance.user = ... # Here goes an instance of your Seekers model
upload_instance.save() # Here you save the whole instance of your Upload model
此外,请注意以下事项:

你的模特搜索者应该用单数而不是复数来命名。这通常与您的所有模型类似。 Python函数应始终以小写字母开头,即list而不是list。然而,无论如何,这个名称在这里是一个错误的选择,因为Python的标准库中已经存在一个名为list的函数。 请仔细查看Django的文档。你需要知道的都在里面。我建议您特别阅读以下章节:


很难说问题出在哪里,但我认为以下代码行是主要问题:

newdoc.resume =Upload(resume = request.FILES['resume'])
在保存整个模型实例之前,必须在文件字段中显式保存文件。此外,如果您的一个模型中有一个ForeignKey字段,并且希望为其分配另一个模型的实例,请在分配之前先保存该实例。在不了解你的搜索者模型的情况下,我所能做的就是猜测什么可能对你有帮助。以下内容可能会帮助您开始:

your_file = request.FILES['resume']
upload_instance = Upload()
upload_instance.resume.save(name=your_file.name, content=your_file, save=False)
upload_instance.user = ... # Here goes an instance of your Seekers model
upload_instance.save() # Here you save the whole instance of your Upload model
此外,请注意以下事项:

你的模特搜索者应该用单数而不是复数来命名。这通常与您的所有模型类似。 Python函数应始终以小写字母开头,即list而不是list。然而,无论如何,这个名称在这里是一个错误的选择,因为Python的标准库中已经存在一个名为list的函数。 请仔细查看Django的文档。你需要知道的都在里面。我建议您特别阅读以下章节:

代码中的问题:

表单定义从模型中复制信息-仅与exclude一起使用,以免显示用户字段 当前粘贴的newdoc=Seekers.objects.getuser_id将引发类型错误'foo'对象不可编辑,没有别的了。 手动访问请求文件['resume']不是必需的,也不建议这样做 总之,你就快到了;让Django表单为您做更多的工作:

# forms.py
class SeekerForm(forms.ModelForm)
    class Meta:
        model = Seeker

# views.py    
def seeker_list(request):
    # Opinions are divided as to whether it's ever appropriate to 
    # modify the database like this on a GET request, but it seems
    # to make sense here
    seeker = Seekers.objects.get_or_create(user=request.user)
    if request.method == 'POST':
        form = SeekerForm(request.POST, request.FILES, instance=seeker)
        if form.is_valid():
            form.save()
            return HttpResponseRedirect('/profile/')
    else:
        form = SeekerForm(instance=seeker)

    seekers = Seekers.objects.all()

    #Render list page with the documents and the form
    return render_to_response('list.html', {
        'seekers':seekers,
        'form':form
    }, context_instance=RequestContext(request))
如果您的代码中有任何被注释掉的部分,其意义是什么还不清楚-我假设您总是想修改当前用户的搜索者,但如果没有,则根据需要进行调整。

代码中的问题:

表单定义从模型中复制信息-仅与exclude一起使用,以免显示用户字段 当前粘贴的newdoc=Seekers.objects.getuser_id将引发类型错误'foo'对象不可编辑,没有别的了。 手动访问请求文件['resume']不是必需的,也不建议这样做 总之,你就快到了;让Django表单为您做更多的工作:

# forms.py
class SeekerForm(forms.ModelForm)
    class Meta:
        model = Seeker

# views.py    
def seeker_list(request):
    # Opinions are divided as to whether it's ever appropriate to 
    # modify the database like this on a GET request, but it seems
    # to make sense here
    seeker = Seekers.objects.get_or_create(user=request.user)
    if request.method == 'POST':
        form = SeekerForm(request.POST, request.FILES, instance=seeker)
        if form.is_valid():
            form.save()
            return HttpResponseRedirect('/profile/')
    else:
        form = SeekerForm(instance=seeker)

    seekers = Seekers.objects.all()

    #Render list page with the documents and the form
    return render_to_response('list.html', {
        'seekers':seekers,
        'form':form
    }, context_instance=RequestContext(request))

不清楚代码中任何注释掉的部分有何意义-我假设您总是想修改当前用户的搜索者,但如果不想修改,则根据需要进行调整。

检查行newdoc=seakers.objects.getuser\u id。搜索者是有效的模型吗?我假设是这样,但它没有显示在models.py代码段中。错误发生在哪里?什么是回溯?正如我以前多次说过的,所有这些回溯信息的显示都是有原因的。请发布它。错误是因为.get的语法将是.getpk=user\u id,而不仅仅是.getuser\u id。但是,您的代码还有其他问题-请参阅下文。我已将seeker模型添加到代码中&感谢您的回答检查行newdoc=Seekers.objects.getuser\u id。Seekers是有效的模型吗?我假设是这样,但它没有显示在models.py代码段中。错误发生在哪里?什么是回溯?正如我以前多次说过的,所有这些回溯信息的显示都是有原因的。请发布。错误是因为.get的语法是.getpk=user\u id,而不仅仅是.getuser\u id。您的代码还有其他问题,但是,请看下面。我已经在代码中添加了seeker模型&感谢您的回答,但是我得到了错误upload\u instance=seeker.object.getid获取错误内置的\u方法或函数对象不是可迭代的,因为您显然既没有仔细阅读supervacuo,也没有仔细阅读我的答案。再读一遍。但是我上传时出错了
nce=Seeker.object.getid获取错误内置方法或函数对象不是可迭代的,因为您显然没有足够仔细地阅读supervacuo和我的答案。再读一遍。