0

私の質問は:DeleteView内の2番目のモデルオブジェクトのパラメータをget_success_urlに渡す方法を教えてください。

  • は、どのように私は、Listオブジェクトのインスタンスから(param>の<「list_pk」は、この場合には)DeleteViewが基づいているモデル以外のオブジェクトからパラメータを参照ください

  • に成功get_success_urlテンプレートをレンダリングするために...私のget_success_url逆方法に私のDeleteViewから

  • を渡しますか?

    class DeleteItemView(LoggedInMixin, DeleteView): 
    model = Item 
    
    def get_success_url(self): 
        return reverse_lazy(
         'lists:listdetail', 
         kwargs = {'username': self.request.user, 
            ??'list_pk': self.request.user.list.id ??}) 
    

    list_pkがパラメータIです:

    url(r'^(?P<username>[a-zA-Z0-0_.-]+)/(?P<list_pk>\d+)/delete_item/(?P<pk>\d+)$', 
    views.DeleteItemView.as_view(), 
    name='deleteitem'), 
    

    マイDeleteViewコードは以下の通りです:

    url(r'^(?P<username>[a-zA-Z0-0_.-]+)/(?P<list_pk>\d+)/$', 
        views.list_detail, 
        name='listdetail'), 
    

    マイDeleteView URLは次のとおりです。

私get_success_urlはこれですsuccess_uに渡す必要がありますrl。これは、関連しているが別々のList()オブジェクトからのものです。私。リストには多くのアイテムがあります - アイテムにはリストがあります。

self.request.user usernameパラメータに問題はありません。私はlist_pkパラメータを無駄にキャプチャするために多くの順列を試しました。囲まれた現在の試みは? ??論理的に私にとって理にかなっているものですが、Userオブジェクトにはリスト属性がないというエラーが表示されます。

私はクラスベースのビューが新しくなっているので、明らかにこの問題が修正されているはずですが、まだ見つかりませんでした。

もう一つの試みは、get_context_dataを使ってListオブジェクトを渡し、必要な特定のlist_pkを抽出してからsuccess_urlで参照することを中心にしていましたが、ここではその試みは含まれていませんでした。

ご迷惑をおかけして申し訳ありません。ありがとう。

答えて

0

関数ベースのビューと同様に、クラスベースのビューでは、urlパラメータがキーワード引数として渡されます。 CBVでアクセスするには、self.kwargs.get('some_parameter')を使用します。

class DeleteItemView(LoggedInMixin, DeleteView): 
model = Item 

    def get_success_url(self): 
     list_pk= self.kwargs.get('list_pk') 
     # I don't see why you would need a lazy inside a method... 
     return reverse('lists:listdetail', 
         kwargs = {'username': self.request.user, 'list_pk': list_pk}) 
+1

ありがとうございます。それは最高です。 – Finn

関連する問題