2017-02-21 6 views
0

私はユーザーがビデオにイベントを追加できるフォームを用意しています。投稿すると、イベントページにリダイレクトされますが、必要なコードを見つけられません。form.save()の特定のフィールドを呼び出すDjango ModelForm

ここに私のコードです:

views.py:

def add_video(request): 
    if request.method == "POST": 
     form = AddVideo(request.POST) 
     if form.is_valid(): 
      event = form.save() 
      return redirect('event_detail', slug=event.slug) 
    else: 
     form = AddVideo() 
    return render(request, 'add_video.html', {'form': form}) 

models.py:

class Video(models.Model): 
    event = models.ForeignKey(Event, on_delete=models.CASCADE) 
    url = models.CharField(max_length=255) 

はurls.py:

url(r'^climbs/(?P<slug>[-\w]+)/$', views.event_detail, name='event_detail'), 

私はこのコードを実行すると、 、私はVideモデルには属性スラグはありません。この属性は、イベントモデルの下にあります。フォームからイベントを引き出し、対応するスラッグを使用するにはどうすればよいですか?

答えて

1

Whelp、これを投稿したらすぐにわかりました。 views.pyを次のように変更してください:

def add_video(request): 
    if request.method == "POST": 
     form = AddVideo(request.POST) 
     if form.is_valid(): 
      video = form.save() 
      return redirect('event_detail', slug=video.event.slug) 
    else: 
     form = AddVideo() 
    return render(request, 'add_video.html', {'form': form}) 
関連する問題