1

我希望能够根据登录的用户保存表单提交的数据(而不是让用户通过文本框写下他/她的名字)。我正在使用 django 的内置身份验证系统。关于我如何做到这一点的任何想法?

@login_required 
def add_review(request, product_id):
    p = get_object_or_404(Productbackup, pk=product_id)
    if request.method == 'POST':
        form = ReviewbackupForm(request.POST)
        if form.is_valid():
            review = form.save(commit=False)
            review.product = p
            #how to save user as well?  review.user = user
            review.save()
            return HttpResponseRedirect(reverse('reserve.views.view_reviews', kwargs={'product_id':p.id}))
    else:
        form = ReviewbackupForm()
    variables = RequestContext(request, {'form': form, 'product_id': product_id})
    return render_to_response('reserve/templates/create_review.html', variables)
4

1 回答 1

2

你已经使用 save withcommit=False所以你快到了。您可以从请求对象中获取登录用户。

if form.is_valid(): 
    review = form.save(commit=False) 
    review.product = p 
    review.user = request. user 
    review.save()

有关更多详细信息,请参阅用户身份验证的 Django 文档

于 2012-07-04T02:23:38.737 回答