Django使用用户外键保存表单

时间:2015-05-05 16:12:03

标签: django django-forms

我可能会说出来,因为我在这里看不到问题,而且我确信它有点微不足道。

我有一个模型表单,他的模型是Profile(Profile是用户在网站上通过多种形式,正常工作)。在这种特殊形式中,我只使用一个字段。当我尝试保存它时,它会中断:列中的空值" user_id"违反非空约束。用户是Profile模型上的外键。

我有类似的表单/视图,只处理Profile模型中的一个字段,保存工作正常。我比较代码而我无法看到差异。正如我所说,我可能会烧掉一点。

这是我的表格:

class CompleteRegistration(forms.ModelForm):
    class Meta:
        model = Profile
        fields = ('resume',)

这是观点:

def complete_registration(request):
    if request.method == "POST":
        form = CompleteRegistration(request.POST)
        if form.is_valid():
            form.save()
            return redirect(request.GET.get('next', ''))
    else:
        form = CompleteRegistration()

    context = {
        'form': form
    }

    return render_to_response('accounts/complete_registration.html', context, RequestContext(request))

它应该很简单,但我显然遗漏了一些东西。 Profile模型还有一个uuid字段。它存在于失败的行中,这让我更加困惑。为什么有一个uuid而没有用户?有任何想法吗?可能是因为视图中的User实例实际上是SimpleLazyObject?

1 个答案:

答案 0 :(得分:1)

表单中缺少Profile个实例。您应该将其作为instance参数传递,否则表单会尝试创建一个新实例(它没有user_id)。