Python 模型表单中有多个字段时,文件未上载

Python 模型表单中有多个字段时,文件未上载,python,django,filefield,Python,Django,Filefield,如果我的模型中有多个字段而不是文件字段,我将无法上载文件。我没有在页面上得到任何错误,但页面只是显示相同的页面,没有上传我的图像 这是我的模型 class ImageUpload(models.Model): username = models.ForeignKey(User) imagefile = models.FileField(upload_to='pictures') isapproved = models.BooleanField() class Meta:

如果我的模型中有多个字段而不是文件字段,我将无法上载文件。我没有在页面上得到任何错误,但页面只是显示相同的页面,没有上传我的图像

这是我的模型

class ImageUpload(models.Model):
   username = models.ForeignKey(User)
   imagefile = models.FileField(upload_to='pictures')
   isapproved = models.BooleanField()
   class Meta:
       db_table = u'imageupload'

   def __unicode__(self):
       return u'%s' % (self.imagefile)
这是我的表格范本

class UploadImageForm(forms.ModelForm):
   def __init__(self,user, *args, **kwargs):
       super(UploadImageForm, self).__init__(*args, **kwargs)
       self.fields['username'] = forms.CharField(initial = user,
                                       widget = forms.TextInput(
                                     attrs = {'readonly':'readonly'}))
   class Meta:
       model = ImageUpload
       exclude = ('id', 'isapproved')
这是我处理数据的视图

def imageupload(request):
# Handle file upload
   if request.method == 'POST':
      list = ["jpeg", "jpg","JPG","JPEG","png","PNG"]
      format = imghdr.what(request.FILES['imagefile'])
      if format not in list:
          error = "Please upload a valid file format"
          form = UploadImageForm(request.user)
          return HttpResponseRedirect(reverse('myview.views.imageupload'))
      else:
          form = UploadImageForm(request.POST, request.FILES)
          if form.is_valid():
              newdoc = ImageUpload(imagefile = request.FILES['imagefile'])
              newdoc.save()
          return HttpResponseRedirect(reverse('myview.views.imageupload'))
  else:
      form = UploadImageForm(request.user) # A empty, unbound form
  documents = ImageUpload.objects.all()
  return render_to_response('imageupload.html',
       {'documents': documents, 'form': form,'media':settings.MEDIA_URL},
        context_instance=RequestContext(request)
   )
当我在模型表单中只使用了文件字段时,它可以正常工作。在向模型中添加更多字段后,不会上载文件。有没有关于如何解决这个问题的建议

提前谢谢
Vikram

只需在视图中添加一个else块以进行表单验证。我认为您的表单是无效的,您不只是打印模板中的任何错误

if form.is_valid():
    newdoc = ImageUpload(imagefile = request.FILES['imagefile'])
    newdoc.save()
else:
    # do something visible here
此外,如果表单有效,您可以使用
form.save()
保存图像和相关数据,而不是创建新的
ImageUpload
对象


此外,您的模型需要保存
用户
对象。

您是否确实在模板中显示表单错误?在我看来,
用户名
字段不太可能有效。我没有显示任何错误。此外,我尝试了显示,但没有显示错误。我们需要给出
用户
对象的任何实例来保存表单吗?附带说明:您不应该命名
列表
-如果匹配,我个人会使用
(“(?i)(jpe?g)|(png)”,格式)无
该代码没有问题。因为当我的模型表单只有一个文件字段时,我使用有效和无效的文件格式对其进行了测试