2017-11-15 5 views
0

フォームを編集してフォームをクラスベースのビューUpdateViewに送信する機能ビューを切り替えようとしています。私はフォームにアクセスする必要があります。DjangoのUpdateViewクラスのフォームのみを返すにはどうすればよいですか?

今まで私は、このビューを使用します。それはモーダルウィンドウに表示されている形で使用されているため

@login_required 
def edit_sale_view(request, id): 
    instance = get_object_or_404(Sale, id=id) 
    form = EditSaleForm(instance=instance) 
    if request.method == "POST": 
     form = EditSaleForm(request.POST, instance=instance) 

     if form.is_valid(): 
      obj = form.save(commit=False) 
      obj.user = request.user 
      obj.save() 
      return JsonResponse({'msg': 'Data saved'}) 
     else: 
      return JsonResponse({'msg': 'Data not saved'}) 
    return HttpResponse(form.as_p()) 

form.as_p()が重要です。

私はテンプレート全体ではなく、フォームだけを返す方法を見つける必要があると思います。

答えて

0

フォームインスタンスにアクセスするには、form_validメソッドをオーバーライドします。例:

class SomeView(UpdateView): 
    ... 
    def form_valid(self, form): 
     self.object = form.save(commit=False) 
     self.object.user = self.request.user 
     self.object.save() 
     return HttpResponseRedirect(self.get_success_url()) # or use return JsonResponse({'msg': 'Data saved'}) 

    def get_initial(self): 
     initial = super(SomeView, self).get_initial() 
     # do something 
     return initial() 
+0

編集前にデータベースからデータを取り込むフォームにアクセスする必要があります。 – GiannisIordanou

+0

その場合、get_initialメソッドを使用してください。私は答えを更新しました – ruddra

+0

私はフォームにアクセスする方法を見つけるのではなく、テンプレート全体ではなくフォームだけを返そうとするべきだと思います。 – GiannisIordanou

関連する問題