我试图将当前登录用户的用户名作为我的模型中的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',)
答案 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。