Django:使用模型保存保存用户ID

时间:2010-02-08 00:13:05

标签: django django-models

我的问题与此问题非常相似:Django: Populate user ID when saving a model

不幸的是我不太明白他们的答案。

当用户登录时,我希望他们能够提交链接,并且我有一个我似乎无法填充的user_id外键。

def submit(request):
    if request.method == 'POST':
        form = AddLink(request.POST)
        if form.is_valid():
            form.save()
            return redirect('home')
    else:
        form = AddLink()

    return render_to_response('links/submit.html', {'form': form})

每次我提交表单时都会提到:

null value in column "user_id" violates not-null constraint

我理解但我不知道如何将user_id添加到我的表单对象。如何访问当前登录用户的ID并将其与表单数据一起提交?

2 个答案:

答案 0 :(得分:11)

您可以这样做:

if form.is_valid():
    link = form.save(commit=False)
    link.user = request.user
    link.save()

commit = False允许您在将结果对象实际保存到数据库之前修改它。

答案 1 :(得分:6)

将此if form.is_valid() - 块替换为:

if form.is_valid():
    form.instance.user = request.user
    form.save()
    return redirect('home')