说我有像这样的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
Comment
个User1
个Post
个
我正在考虑创建某种方法来检查用户已经在特定帖子上发表了多少评论,但我不知道从哪里开始使用外键的复杂性。
答案 0 :(得分:0)
编辑:哎呀,误解了你的问题。认为你想限制投票时间,而不是绝对的投票数:)。
我会向Comment
模型添加DateTimeField,然后检查views.py
是否允许他创建新评论。 (或者,如果您有CommentForm
,则可以使用自定义is_valid)
在伪代码中,检查是否允许再次发表评论会是这样的。
if (comment_date < timezone.now() - datetime.timedelta(minutes=min_comment_time)):
// allow comment
答案 1 :(得分:0)
对于尝试对给定帖子发表评论的特定用户,您可以调用以下方法。 user
和post
应分别是User1
和Post
模型的实例。
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
。