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

TLK*_*TLK 1 django django-models

我的问题与这个问题非常相似: Django:保存模型时填充用户ID

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

当用户登录时,我希望他们能够提交链接,并且我有一个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})
Run Code Online (Sandbox Code Playgroud)

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

null value in column "user_id" violates not-null constraint
Run Code Online (Sandbox Code Playgroud)

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

小智 11

你可以这样做:

if form.is_valid():
    link = form.save(commit=False)
    link.user = request.user
    link.save()
Run Code Online (Sandbox Code Playgroud)

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


Ben*_*end 6

if form.is_valid()用这个替换你的-block:

if form.is_valid():
    form.instance.user = request.user
    form.save()
    return redirect('home')
Run Code Online (Sandbox Code Playgroud)