django - Django Signals 如何允许未经身份验证的用户发表评论?
问题描述
我正在尝试创建一个通知系统,如果在他的博客文章中发布任何新评论,它将通知作者。如果用户未登录并尝试发表评论,我会收到此错误。
Cannot assign "<SimpleLazyObject: <django.contrib.auth.models.AnonymousUser object at 0x0000017B3D819CA0>>": "BlogComment.user" must be a "User" instance.
这是我的代码:
通知模型.py
class Notifications(models.Model):
blog = models.ForeignKey('blog.Blog',on_delete=models.CASCADE)
NOTIFICATION_TYPES = ((1,'Like'),(2,'Comment'), (3,'Follow'))
sender = models.ForeignKey(User, on_delete=models.CASCADE, related_name="noti_from_user")
user = models.ForeignKey(User, on_delete=models.CASCADE, related_name="noti_to_user")
notification_type = models.IntegerField(choices=NOTIFICATION_TYPES)
评论models.py
class BlogComment(models.Model):
blog = models.ForeignKey(Blog,on_delete=models.CASCADE,null=True, blank=True)
user = models.ForeignKey(User, on_delete=models.CASCADE, related_name='user_comment',blank=True,null=True)
def user_comment(sender, instance, *args, **kwargs):
comment= instance
blog = comment.blog
sender = comment.user
notify = Notifications(blog=blog, sender=sender, user=blog.author, notification_type=2)
notify.save()
post_save.connect(BlogComment.user_comment, sender=BlogComment)
视图.py:
if request.method == "POST":
if comment_form.is_valid():
isinstance = comment_form.save(commit=False)
isinstance.user = request.user
isinstance.blog = blog
isinstance.save()
如何允许未经身份验证的用户发表评论?
解决方案
推荐阅读
- vue.js - 在 main.js 中使用 Moment.js 作为插件
- html - 在 Angular HTML 中动态添加翻转卡片
- javascript - 单击第二个按钮后服务器端的隐藏字段更新
- python - 为什么随机给出错误的输出
- python - 在 sklearn 和 skmultilearn 中以离线模式加载数据集
- reactjs - Reactjs 集中组件
- c++ - 用于 C++ 中普通结构数组的通用 TableView/DataFrame 功能
- c++ - 使用 CMake 安装库时如何链接可能是共享库的目标
- encryption - 在重置时加密 DB2 表数据。兼容 z/linux 和 Z/os
- python - 这段代码是如何工作的?是否有不同的方式来编写它以使其更具可读性?