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

-1 投票
1 回答
2437 浏览
提问于 2025-04-18 09:14

我想在我的模型中获取当前登录用户的用户名,并把它作为一个字符字段,这样我就可以以后追踪某个用户的所有评论。但我不太明白该怎么做。我看不懂这个回答。初始化函数是怎么把用户的名字放进模型里的呢?

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 个回答

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 装饰器会确保只有在用户登录的情况下,才能执行你的视图代码。

在这里,我假设你的 Review 模型中有一个叫 user_name 的字段,它是指向你的用户模型的外键。

撰写回答