如何获取当前登录的用户(来自auth)并在帖子上显示他的姓名



如何获取用户名并将其保存到讨论中的auhtor模型中,然后在模板中显示。我试了几件事,但都不管用。感谢您的帮助。感谢

型号

class  Discussion(models.Model):
author=models.CharField(max_length=15,null=True)
title=models.CharField(max_length=50)
argument=models.CharField(max_length=350)
slug=models.SlugField(max_length=31,unique=True)
created_on=models.DateField(auto_now=True)
def get_absolute_url(self):
return reverse('discussion_detail',kwargs={'slug':self.slug})
def __str__(self):
return self.title

表单

class DiscussionForm(forms.ModelForm):
class Meta:
model=Discussion
fields=['title','argument','slug']

视图:

class NewDiscussionView(LoginRequiredMixin,View):
template_name='Discussion/new_discussion.html'
form_class= DiscussionForm
def get(self,request):
return render(request,self.template_name,{'form': self.form_class()})
def post(self,request):
bound_form = self.form_class(request.POST,instance=request.user)
if bound_form.is_valid():
new_discussion=bound_form.save()
return render(request,'Discussion/discussion.html',{'discussion':Discussion.objects.all()})
else:
return render(request,self.template_name,{'form': bound_form})

这是devdob 所暗示的解决方案

class NewDiscussionView(LoginRequiredMixin,View):
template_name='Discussion/new_discussion.html'
form_class= DiscussionForm
def get(self,request):
return render(request,self.template_name,{'form': self.form_class()})
def post(self,request):
bound_form = self.form_class(request.POST)
if bound_form.is_valid():
bound_form.instance.author = request.user.username #Solution
new_discussion=bound_form.save()
return render(request,'Discussion/discussion.html',{'discussion':Discussion.objects.all()})
else:
return render(request,self.template_name,{'form': bound_form})

最新更新