0

モデルにファイル フィールド以外の複数のフィールドがある場合、ファイルをアップロードできません。ページでエラーは発生しませんでしたが、ページには画像をアップロードせずに同じページが表示されるだけです。

これが私のモデルです

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

4

1 に答える 1

1

フォームの検証のために、else ブロックをビューに追加するだけです。あなたのフォームは有効ではなく、テンプレートにエラーを出力するだけではないと思います。

if form.is_valid():
    newdoc = ImageUpload(imagefile = request.FILES['imagefile'])
    newdoc.save()
else:
    # do something visible here

また、フォームが有効な場合は、新しいオブジェクトform.save()を作成する代わりに、画像と関連データを保存するために使用できます。ImageUpload

また、モデルではUserオブジェクトを保存する必要があります。

于 2012-10-14T01:19:40.760 に答える