当没有提供实例时,CreateView会抛出“DoesNotExist”

时间:2012-01-04 04:53:12

标签: django django-models django-forms django-class-based-views

我得到了一个" DoesNotExist"以下设置错误 - 我已经尝试调试一段时间而且无法解决问题。

class Video(models.Model):
    name = models.CharField(max_length=100)
    type = models.CharField(max_length=100)
    owner =  models.ForeignKey(User, related_name='videos')
    ...
    #Related m2m fields
    ....

class VideoForm(modelForm):
    class Meta:
        model = Video
        fields = ('name', 'type')

class VideoCreate(CreateView):
    template_name = 'video_form.html'
    form_class = VideoForm
    model = Video

当我这样做并发布' name'和'键入' - 我得到了一个" DoesNotExist"错误。它似乎可以与UpdateView一起使用 - 或者当一个'实例'传递给init表单。

这是引发错误的确切位置: /usr/lib/pymodules/python2.7/django/db/models/fields/related.py在获取,第301行

有谁知道可能会发生什么?

由于

2 个答案:

答案 0 :(得分:1)

由于您尚未发布完整的追溯,我的猜测是您的所有者FK不是可选的,并且您没有在模型表单中指定一个。

您需要发布完整的追溯。

答案 1 :(得分:0)

我认为必须是VideoForm(ModelForm)课而不是VideoForm(modelForm)

如果您不打算在表单中使用外键,请使用exclude = ('owner')