在Django Rest Framework中添加注释字段的最佳方法

时间:2018-11-13 03:37:03

标签: django django-models django-rest-framework

目前,我正在创建一个网站,希望用户可以在其中发表评论。我很难理解如何对模型进行建模。以我的方式,我相信这些评论并没有将他们与主要文章联系起来,我相信它们只会被添加并沉入深渊。连接模型的最佳方法是什么?我是否应该没有单独的评论模型?这更多是一个假设性问题,而不是如何编码问题。目前这就是我的方法。

    class Comments(models.Model):
    id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
    comment = models.CharField(null=True, blank=True, max_length=5000)
    date = models.TextField(blank=True, null=True)
    username = models.CharField(null=True, blank=True, max_length=20)

class Article(models.Model):
    title = models.CharField(max_length=250, primary_key=True)
    content = models.TextField(blank=True, null=True)
    usedfor = models.TextField(blank=True, null=True)
    url=models.CharField(max_length=200, null=True)
    username = models.CharField(max_length=50, null=True, blank=True)
    article_programming_language = models.ForeignKey(ProgrammingLanguage, on_delete=models.CASCADE, blank=True, null=True)
    score = models.IntegerField(max_length=5, null=True, blank=True)
    article_framework = models.ForeignKey(Framework, on_delete=models.CASCADE, related_name="article_framework", blank=True, null=True)
    date_added = models.IntegerField( max_length=10, blank=True, null=True)
    article_comments = models.ForeignKey(Comments, on_delete=models.CASCADE, blank=True, null=True)

    def __str__(self):
        return self.title

2 个答案:

答案 0 :(得分:0)

看来您已经掌握了课堂上所有需要的东西。这里有一些意见。

  1. 评论应该是一个单独的模型。

  2. 每个注释都应发送给特定用户(或匿名用户)。一个用户可以有很多注释,但是注释只能由一个用户创建。在注释中添加一个ForeignKey作为[Bruno Monteiro]建议可以提供帮助。

  3. 每个评论都应针对特定的文章。这也可能是一对多的关系(一个文章可以有很多评论,但评论仅属于特定的文章)。

“最佳设计”的答案太多了。满足您需求的设计是最佳的。因此,当您想找到“最佳设计”时,只需问问自己它将提供什么功能,注释应如何工作,等

答案 1 :(得分:0)

这是我的建议,

  1. 创建评论模型,

  2. 以f.k添加用户模型。 user = models.ForeignKey(User, on_delete=models.CASCADE,)#您可以根据需要添加null和空白

  3. 添加带有article = models.ForeignKey(Article, on_delete=models.CASCADE, related_name='articlecomment')

  4. 的文章模型
  5. 使用auto_now_add = True添加日期

用户可以在此处添加所需数量的评论。