我在Django做了一个评论模型。我该如何制作评论回复模型?

时间:2018-06-12 17:35:31

标签: django django-models

这是我的评论模型:

class Comment(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    subject = models.TextField(max_length=100)
    message = models.TextField(max_length=1500)
    timestamp = models.DateTimeField(auto_now_add=False)

我如何创建另一个可以回复此评论模型的模型,然后再次回复回复的评论。如果您对问题有任何更详细的信息,请与我们联系。

2 个答案:

答案 0 :(得分:2)

让我们假设这是对新闻文章的评论:

添加父字段和文章字段。任何没有parentID的评论记录意味着它直接评论该文章,任何带有parentID的评论意味着它是对另一条评论的评论/回复。

class Comment(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    subject = models.TextField(max_length=100)
    message = models.TextField(max_length=1500)
    timestamp = models.DateTimeField(auto_now_add=False)
    article = models.ForeignKey(article)
    parent = models.ForeignKey(Comment, null=True, on_delete=models.CASCADE)

这意味着您可以拥有1条没有parentID的记录(这意味着它是对该文章的直接评论),50条评论记录,其中父ID是另一条没有ID的评论(表示它们是回复),然后您可以拥有更多具有父ID的记录,这些记录是这些评论的ID。

这也有不需要另一个模型类的好处。 A'回复'与评论相同,只是没有父母。

答案 1 :(得分:0)

这样的事情:

class Reply(models.Model):
    reply = models.TextField(max_length=1500)
    comment = models.ForeignKey('Comment', on_delete=models.CASCADE)
    parent = models.ForeignKey('self', null=True)

然后,您可以对每条评论进行多次回复。

使用父外键记录有人回复的时间。

例如,这就是您在数据库中的期望:

首先评论和回复 -
评论1
回复1
家长空

回复第一个回复 -
评论1
回复2
家长1