39

success_urlパラメータに基づいて設定するにはどうすればよいですか?
静的な場所ではなく、出身地に戻りたいです。擬似コード:

url(r'^entry/(?P<pk>\d+)/edit/(?P<category>\d+)',
    UpdateView.as_view(model=Entry, 
                       template_name='generic_form_popup.html',
                       success_url='/category/%(category)')),

つまり、エントリpkを編集してから「カテゴリ」に戻ります。ここで、エントリは複数のカテゴリの一部になることができます。

4

5 に答える 5

65

メソッドをMyUpdateView継承しUpdateViewてオーバーライドするクラスを作成します。get_success_url

class MyUpdateView(UpdateView):
    def get_success_url(self):
        pass #return the appropriate success url

また、template_nameやmodelなどのパラメーターを継承されたクラスビュー内に渡すのが好きですが.as_view()、urls.pyには渡しません

于 2012-06-14T08:38:23.133 に答える
35

同じ問題がありました。ディマが述べたように、self.kwargsからパラメータを取得することができました:

def get_success_url(self):
        if 'slug' in self.kwargs:
            slug = self.kwargs['slug']
        else:
            slug = 'demo'
        return reverse('app_upload', kwargs={'pk': self._id, 'slug': slug})
于 2012-10-08T16:54:50.127 に答える
4

モデルで定義get_absolute_url(self)します。例

class Poll(models.Model):
    question = models.CharField(max_length=100)
    slug = models.SlugField(max_length=50)
    # etc ...

    def get_absolute_url(self):
        return reverse('poll', args=[self.slug])

そのPollUpdateView(UpdateView)モデルのインスタンスを としてロードすると、デフォルトで、 の後にリダイレクトする場所を特定するメソッドがobject検索されます。それでget_absolute_url()POST

url(r'^polls/(?P<slug>\w+)/, UpdateView.as_view(
    model=Poll, template_name='generic_form_popup.html'),

すべきです。

于 2016-05-21T08:44:58.317 に答える