博客五部曲之一 - 简单博客
1615 浏览 5 years, 11 months
33 通过外键关联用户和帖子
版权声明: 转载请注明出处 http://www.codingsoho.com/发帖时,每个帖子都应该是某一用户关联的 ,所以我们简单建立一个用户和帖子之间的连接
from django.conf import settings
class Post(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL, default=1)
在创建视图里,自动将当期登陆用户保存为帖子用户
def post_create(request):
if not request.user.is_staff or not request.user.is_superuser:
raise Http404
if not request.user.is_authenticated():
raise Http404
form = PostForm(request.POST or None, request.FILES or None)
if form.is_valid():
instance = form.save(commit=False)
instance.user = request.user
instance.save()
messages.success(request, "successfully created")
return HttpResponseRedirect(instance.get_absolute_url())
else:
messages.error(request, "not successfully created")
context = {
'form':form
}
return render(request, 'post_form.html', context)
在创建视图一开始我们做了两个判断,除了之前的员工和超级用户之外,有时候我们也可以判断是否有授权。如果前面没有判断的话,直接分配用户的话,未登录用户创建帖子保存时将会报错
Cannot assign "<SimpleLazyObject: <django.contrib.auth.models.AnonymousUser object at 0x036E5710>>": "Post.user" must be a "User" instance
在post_detail.html和post_list.html添加用户显示,加入下面语句。 User有两个字段First Name和Last Name,只有这两个值赋值之后,get_full_name才不会为空。
{% if instance.user.get_full_name %}
<p>Autho: {{instance.user.get_full_name}}</p>
{% endif %}
列表显示
详情显示