Py学习  »  Django

在django rest框架中添加注释字段的最佳方法

lakerskill • 6 年前 • 1757 次点击  

目前,我正在创建一个网站,我希望用户能够评论。我只是有一个困难的包装我的头周围如何模型可以说。据我所知,我认为这些评论并没有将它们与主要文章联系起来,我相信它们只是被添加到深渊中。连接模型的最佳方式是什么?我不应该有一个单独的评论模型吗?这更多的是一个假设性的问题,而不是一个如何编码的问题。现在我就是这样。

    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
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/41189
文章 [ 2 ]  |  最新文章 6 年前
Bidhan Majhi
Reply   •   1 楼
Bidhan Majhi    6 年前

这是我的建议,

  1. 创建一个评论模型,

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

  3. 添加带有F.K.的物品模型, article = models.ForeignKey(Article, on_delete=models.CASCADE, related_name='articlecomment')

  4. 使用auto_now_add=true添加日期

用户可以在这里添加任意数量的评论。

Woody Johnson
Reply   •   2 楼
Woody Johnson    6 年前

似乎你已经在班上得到了所有你需要的东西。这里有一些看法。

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

  2. 每个评论都应该发送给特定的用户(或匿名用户)。一个用户可以有很多评论,但是一个评论应该只由一个用户创建。在评论中添加一个外键(bruno monteiro)可能会有帮助。

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

“最佳设计”这个词太大了,无法回答。满足你需求的设计是最好的。所以当你想找到一个“最佳设计”时,问问自己它将提供什么功能,评论应该如何工作等等。