从表单获取Django模型的当前用户

时间:2014-06-10 04:17:07

标签: python django

我试图将当前登录用户的用户名作为我的模型中的CharField,以便稍后我可以跟踪来自一个用户的所有评论。但我不明白该怎么做。我不明白this answer。 init函数如何将用户名插入到他的模型中?

forms.py:

class ReviewForm(forms.ModelForm):
    user_name = forms.CharField( GET THE CURRENT USERS USERNAME HERE )
    burger = forms.CharField(max_length=150, help_text="What type of burger was it?")

    class Meta:
        model = Review
        fields = ('place', 'burger',)

1 个答案:

答案 0 :(得分:1)

你需要反过来做。从表单本身中删除该字段(因为用户不会将其输入)。

当前登录的用户将始终可用于您的视图代码,因此只需执行以下操作:

@login_required
def process_form(request):
    form = ReviewForm(request.POST or None)
    if form.is_valid():
        obj = form.save(commit=False)
        obj.user_name = request.user
        obj.save()
        return redirect('home')
    return render(request, 'form.html', {'form': form})

login_required decorator将确保您的视图只能在用户登录时执行。

这里我假设您的Review模型有一个名为user_name的字段,它是您的User模型的ForeignKey。