在Django模型中从表单获取当前用户
我想在我的模型中获取当前登录用户的用户名,并把它作为一个字符字段,这样我就可以以后追踪某个用户的所有评论。但我不太明白该怎么做。我看不懂这个回答。初始化函数是怎么把用户的名字放进模型里的呢?
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
的字段,它是指向你的用户模型的外键。