限制用户发表评论的次数

时间:2016-07-02 17:39:19

标签: python django

说我有像这样的django模型

distance_from_*

现在当有人创建class Comment(models.Model): commentDescription = models.CharField(max_length=60) commentOwner = models.ForeignKey(User1,null=True) post = models.ForeignKey(Post, null=True) class Post(models.Model): postDescription = models.CharField(max_length=200) postOwner = models.ForeignKey(User1,null=True) class User1(models.Model): user = models.OneToOneField(User) def __unicode__(self): return self.user.username 时,我必须限制特定Post生成的Comment数量,以便User1可以拥有大量Post { {1}}但只允许Comment

CommentUser1Post

我正在考虑创建某种方法来检查用户已经在特定帖子上发表了多少评论,但我不知道从哪里开始使用外键的复杂性。

2 个答案:

答案 0 :(得分:0)

编辑:哎呀,误解了你的问题。认为你想限制投票时间,而不是绝对的投票数:)。

我会向Comment模型添加DateTimeField,然后检查views.py是否允许他创建新评论。 (或者,如果您有CommentForm,则可以使用自定义is_valid

在其中进行检查

在伪代码中,检查是否允许再次发表评论会是这样的。

if (comment_date < timezone.now() - datetime.timedelta(minutes=min_comment_time)):
    // allow comment

答案 1 :(得分:0)

对于尝试对给定帖子发表评论的特定用户,您可以调用以下方法。 userpost应分别是User1Post模型的实例。

def allow_comment(user, post):
    user_comments = post.comment_set.filter(
        commentOwner=user,
    )
    current_count = user_comments.count()
    if current_count < 3:
        return True
    else:
        return False

应该从用户要评论的视图中调用此方法。如果您想在user上返回post的{​​{1}}条的评论数量并使用它,只需返回current_count