2017-02-08 4 views
0

テンプレートで2つのイメージを選択すると、saveメソッドは常に最後に選択したイメージを保存しますが、何が起こるのか分かりません。forループはDjangoの最後のファイルのみを保存するのはなぜですか?

これが私の見解です:

class imgcreate(CreateView): 
    model = Archivos 
    template_name = 'img.html' 
    form_class = imgForm 
    success_url = reverse_lazy('BackEnd:unidades') 

    def post(self, request, *args, **kwargs): 
     form_class = self.get_form_class() 
     form = self.get_form(form_class) 
     files = request.FILES.getlist('imagen') 
     if form.is_valid(): 
      a = 0 
      for imagen in files: 
       a = a+1 
       img = form.save(commit=False) 
       img.id_unidad = 1 
       img.tipo_archivo = 1 
       img.nombre_archivo ='hhh'+ str(a) 

       img.save() 
      print(a); 


      return self.form_valid(form) 

     else: 
      return self.form_invalid(form) 

印刷は常に返すだけ最後の画像を意味2で画像の名前は

+1

はぁ?あなたの 'print(a)'ステートメントはループの外にあります。それで、 'files'の長さを表示する方法があります。ループの内側に移動すると、1、2、3などが印刷されます。 – GAEfan

答えて

0

を保存しているこれが私の作品:

if request.method=="POST": 
    form = PlanfileForm(request.POST, request.FILES) 
    if form.is_valid(): 
     files = request.FILES.getlist('large_img') 

     for a_file in files: 
      instance = Planfile(
      plan_id = 1, #the foreign key 
      large_img=a_file 
      ) 
      instance.save() 
     return HttpResponse("success!") 
else: 
    ... 
関連する問題