在form.save()Django ModelForm上调用特定字段

时间:2017-02-21 22:34:50

标签: python 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'),

当我运行此代码时,我不断收到视频模型没有属性slug的错误。此属性位于“事件”模型下。如何从表单中提取事件并使用相应的slug?

1 个答案:

答案 0 :(得分: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})