在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

您似乎已经在类中获得了所有需要的东西。以下是一些意见。

  1. 注释应该是一个单独的模型。

  2. 每个评论都应该指向一个特定的用户(或匿名用户(。一个用户可以有很多评论,但一个评论只能由一个用户创建。按照布鲁诺·蒙泰罗的建议在评论中添加ForeignKey可能会有所帮助。

  3. 每一条评论都应该针对一篇具体的文章。这也可能是一对多关系(一篇文章可能有很多评论,但一条评论只属于特定的文章(。

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

这是我的建议,
  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 添加日期

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

相关内容