私のユーザは、ページを見て、そのページを更新してから、そのページに戻ったり、編集を続けたりできます。だから今、彼らはゲームについての情報を追加したいDjango - UpdateViewの動的success_url
# urls.py
url(r'^gameview/$', views.GameView.as_view(template_name='matchview.html'), name='GameView')
# Views.py
class GameView(generic.TemplateView):
template_name = "matchview.html"
def get_context_data(self, **kwargs):
context = super(GameView, self).get_context_data(**kwargs)
q = self.request.GET.get('match')
context['report'] = GameNotes.objects.filter(game=q)
context['game'] = Schedule.objects.get(match=q)
context['gamepic'] = Photo.objects.filter(game=q)
return context
:
は、ここで情報を表示するビューです。私はUpdateViewを使用します
class GameView(generic.TemplateView):
template_name = "matchview.html"
def get_context_data(self, **kwargs):
context = super(GameView, self).get_context_data(**kwargs)
q = self.request.GET.get('match')
context['report'] = GameNotes.objects.filter(game=q)
context['game'] = Schedule.objects.get(match=q)
context['gamepic'] = Photo.objects.filter(game=q)
return context
ユーザが後者のビューで更新を終えると、それらはまったく同じチームで元に戻されます。 This postは「get_success_url」を使用している限り正しい方向に移動するのを助けましたが、私はkwargsを使用しているとは思わないので、まだ固執しています。私が試したすべてがエラーに終わった。
(マイ(ゴクゴク)考え、このようなものは簡単ですが、私はことを確認したかったように、PKのを使用するために、私は再書き込みする必要があることのURLです)
EDIT: 私の非常に醜いの試み(注:I 2つの送信ボタンがあります.1つは更新するボタン、もう1つは更新してメモを追加するボタンです。
def form_valid(self, form):
if form.is_valid():
form.save()
if 'submit' in self.request.POST:
q = self.request.GET.get('match')
return reverse_lazy('TeamView', args=(q))
else:
return render('addnotes', {'game' : q})
SOLUTION:
は、URLパラメータとkwargsから使用する方法を学びました:
def get_success_url(self, **kwargs):
q = self.kwargs.get('match')
if "submit" in self.request.POST:
url = reverse('GameView', args={q : 'match'})
else:
url = reverse('AddNotes', args={q : 'match'})
return url
あなたがPKをを使用する必要はありませんが、あなたが本当にURLパラメータではなく、クエリ文字列を使用する必要があります。 –
'get_success_url'で試したことを示してください。 ( '/ gameview/1 /)'のメインキーをクエリ文字列( '/ gameview /?match = 1')よりも綺麗にすることはできますが、したくない場合はスイッチを切り替える必要はありません。 'get_success_url'で' self.request.GET.get( 'match') 'にアクセスできます。 – Alasdair
@DanielRosemanなぜ私に聞くことができますか?より安全な? –