如何解决Django发出注释通知信号
我正在从事django项目,并且我写了post_save
信号以在发表评论时通知帖子作者。现在,我想添加一个post_save
信号,以通知帖子作者和评论用户进行了评论(回复)。我该如何处理?这是因为我的评论模型上存在父子关系。
下面是我的型号和信号代码。有人可以帮忙吗?我是django的新手,刚刚开始学习django信号。
class Comment(models.Model):
user = models.ForeignKey('auth.User',on_delete=models.CASCADE)
post = models.ForeignKey('forum.Post',related_name='comments',on_delete=models.CASCADE)
reply = models.ForeignKey('self',null=True,blank=True,related_name='replies',on_delete=models.CASCADE)
text = models.TextField(max_length=250,blank=True)
@receiver(post_save,sender=Comment)
def user_comment_post(sender,instance,created,**kwargs):
if created:
comment = instance
post = comment.post
#reply = comment.reply
text_preview = comment.text[:90]
sender = comment.user
notify = Notification.objects.create(post=post,sender=sender,comment=comment,user=post.author,text_preview=text_preview,notification_type=2)
notify.save()
解决方法
如果要保存的评论是答复,则可以通过访问其相关管理器执行EXISTS查询来签入相同的post_save钩子:
x = self.fc1.__call__(x)
,
根据模型结构:
- 指向
Comment
的新Post
对象的Comment.reply
字段如None
- 对现有
Comment
对象的回复(另一个Comment
对象)将有Comment.reply
不如None
。将有一个父级{ {1}}个对象。
因此,请检查信号实例是否为Comment
。
-
comment.reply is None
是对帖子的新评论>>>仅向帖子所有者发送通知 -
if comment.reply is None
是对帖子的现有评论的新评论(回复)>>>向帖子所有者和评论所有者发送通知
if comment.reply is not None
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。