django imagefield save无类型对象错误

问题描述:

如何将图像上传到ima​​gefield?以下是给我一个'NoneType' object has no attribute 'chunks'django imagefield save无类型对象错误

我相信我做错了,有人可以告诉我这样做的正确方法吗?

这是我迄今为止保存上传的图像。

def add_employee(request): 

if request.method == 'POST': 
    form_input = AddEmployee(request.POST, request.FILES) 
    if form_input.is_valid(): 
     cd = form_input.cleaned_data 
     new_emp = Employees(
       first_name = cd['first_name'] 
       ..... 
      ) 

     new_emp.save() 
     photo_file = cd['photo_file'] 
     new_emp.photo.save('filename', photo_file) 

    return HttpResponseRedirect('/thanks/') 

forms.py和models.py

class AddEmployee(forms.Form): 
     ... 
     photo_file = forms.ImageField(required=False) 

class Employees(models.Model): 
     ... 
     photo = models.ImageField(upload_to='employee_photos', blank=True, null=True) 
+0

如果不提供完整的堆栈跟踪,则很难帮助您。我们不知道你的AttributeError来自哪里。 – andreaspelme

+0

@andreaspelme它来自这一行'new_emp.photo.save('filename',photo_file)' – zentenk

你或许应该使用modelforms。用的ModelForm,您的代码会是这个样子:

在forms.py:

在views.py
from django import forms 

from .models import Employees 

class EmployeeForm(forms.ModelForm): 
    class Meta: 
     model = Employees 

from django.shortcuts import render 
from django.http import HttpResponseRedirect 

from .forms import EmployeeForm 

def add_employee(request): 
    form = EmployeeForm(request.POST or None, request.FILES or None) 

    if form.is_valid(): 
     form.save() 
     return HttpResponseRedirect('/thanks/') 

    return render(request, 'your_template.html', {'form': form}) 

这是标准/最佳实践的方式来处理与模型相关的表单。 request.POST or None是避免检查request.method == 'POST'的诀窍。

这是一个简单的例子,您可以轻松地添加选择字段以从模型中包含/排除,为特定表单添加额外字段,在保存模型之前添加额外的逻辑,或者添加自定义验证。

查看文档ModelFormshttps://docs.djangoproject.com/en/dev/topics/forms/modelforms/

好了一些后周围挖我发现了什么问题。

request.FILES没有任何内容,因此我需要在我的表单中添加NoneType以使请求生效。