2016-10-14 5 views
-1

クラスベースのビューで直接kwargsを取得する方法があるのだろうかと思いました。Django 1.9クラスベースのビューでkwargsを取得

views.py

class EmployeesUpdateStudies(UpdateView): 
    form_class = form_ES 
    model = EmployeePersonal 
    template_name = 'employeesControll/employees_studies_update_form.html' 
    success_url = reverse('employee-details', kwargs={'pk': kwargs.get('pk')}) 

マイURLは、以下の

url(r'^employees/detalles/(?P<pk>[0-9]+)/$', login_required(views.EmployeeDetails.as_view()), name='employee-details') 
です:私は、これはクラス内の関数で行うことができますが、私はこれをしようとすると、私は問題を抱えている知っています

答えて

1

kwargsを使用することはできません。サーバーが起動するときにDjangoがクラスをロードすると、要求にアクセスできないためです。代わりにget_success_urlメソッドをオーバーライドします。

def get_success_url(self) 
    return reverse('employee-details', kwargs={'pk': self. kwargs['pk']}) 
+0

グレート、。ありがとう! – Izuzvo

2

Alasdairの答えがあなたの問題を解決します。ただし、あなたのビューのためのsuccess_urlとして機能しますあなたのEmployeePersonalモデルのget_absolute_url方法を定義することができます。

あなたもCreateViewまたは UpdateViewためsuccess_urlを提供する必要はありません - 彼らはモデルにget_absolute_url()を使用します。可能であればオブジェクト 。

モデルオブジェクトのプライマリキーにself.idメソッドを使用します。


参考:あなたが私を救っ

Model Forms

+0

あなたの答えは、私のアプリケーションのいくつかの他のもので助けになるかもしれません。 – Izuzvo

関連する問題