我知道错误意味着什么,我知道为什么会发生这种情况。但我不知道如何解决它并实现我的目标。这就是我正在做的事情。
发布内容的用户需要在其他用户发帖评论该内容时收到通知。我能够做到"通知评论的人何时回复该评论"。所以,我想我会为我遇到的问题做同样的事情。但我得到了上述错误。这是我的代码。
models.py
发表评论
class Comment(models.Model):
user = models.ForeignKey(MyProfile)
parent = models.ForeignKey("self", null=True, blank=True)
post = models.ForeignKey(Post, null=True, blank=True, related_name="commented_post")
@property
def get_origin(self):
return self.path
@property
def get_comment(self):
return self.text
@property
def is_child(self):
if self.parent is not None:
return True
else:
return False
def get_children(self):
if self.is_child:
return None
else:
return Comment.objects.filter(parent=self)
def get_affected_users(self):
"""
it needs to be a parent and have children,
the children, in effect, are the affected users.
"""
comment_children = self.get_children()
if comment_children is not None:
users = []
for comment in comment_children:
if comment.user in users:
pass
else:
users.append(comment.user)
return users
return None
get_affected_user
函数允许哪个用户获取通知。 (创建回复的人不应该收到通知,得到回复的人应该收到通知)。
在我的views.py
def comment_create_view(request):
form = CommentForm(request.POST)
if form.is_valid():
comment_text = form.cleaned_data['comment']
if parent_comment is not None:
# parent comments exists
new_comment = Comment.objects.create_comment(
user=MyProfile.objects.get(user=request.user),
path=parent_comment.get_origin,
text=comment_text,
post = post,
parent=parent_comment
)
affected_users = parent_comment.get_affected_users()
notify.send(
MyProfile.objects.get(user=request.user),
action=new_comment,
target=parent_comment,
recipient=parent_comment.user,
affected_users = affected_users,
verb='replied to')
#the above code gives reply-comment notification makes possible, the below code is the one I'm struggling
else:
new_comment = Comment.objects.create_comment(
user=MyProfile.objects.get(user=request.user),
path=origin_path,
text=comment_text,
post = post
)
这一行导致了这个问题,可能是因为我在Post模型中没有get_affected_user
功能,但在评论模型中我有post字段,其中有一个带有Post的外键。所以在技术上我不能使用这个功能吗?
affected_users = [post.moderator.get_affected_users()]
notify.send(
MyProfile.objects.get(user=request.user),
recipient = MyProfile.objects.get(user=request.user),
action=new_comment,
target = new_comment.post,
affected_users = affected_users,
verb='commented on')
我在评论中有get_affected_users
,而在评论中我发帖与Post有postKey关系,在帖子中我有版主。所以我想我可以get_affected_users
使用post.moderator
......但我猜不是,我该怎么做呢?
如果问题不清楚,请原谅。任何帮助将受到高度赞赏。
答案 0 :(得分:0)
我将假设Post.moderator与MyProfile的FK与Comment.user相同。其次,我猜你正在尝试做的是在Post对象上创建新的顶级注释或没有设置parent
的注释时通知主持人。在这种情况下,您的行应该只是affected_users = [post.moderator]
。