目前,我正在创建一个网站,希望用户可以在其中发表评论。我很难理解如何对模型进行建模。以我的方式,我相信这些评论并没有将他们与主要文章联系起来,我相信它们只会被添加并沉入深渊。连接模型的最佳方法是什么?我是否应该没有单独的评论模型?这更多是一个假设性问题,而不是如何编码问题。目前这就是我的方法。
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
答案 0 :(得分:0)
看来您已经掌握了课堂上所有需要的东西。这里有一些意见。
评论应该是一个单独的模型。
每个注释都应发送给特定用户(或匿名用户)。一个用户可以有很多注释,但是注释只能由一个用户创建。在注释中添加一个ForeignKey作为[Bruno Monteiro]建议可以提供帮助。
每个评论都应针对特定的文章。这也可能是一对多的关系(一个文章可以有很多评论,但评论仅属于特定的文章)。
“最佳设计”的答案太多了。满足您需求的设计是最佳的。因此,当您想找到“最佳设计”时,只需问问自己它将提供什么功能,注释应如何工作,等
答案 1 :(得分:0)
这是我的建议,
创建评论模型,
以f.k添加用户模型。 user = models.ForeignKey(User, on_delete=models.CASCADE,)
#您可以根据需要添加null和空白
添加带有article = models.ForeignKey(Article, on_delete=models.CASCADE, related_name='articlecomment')
使用auto_now_add = True添加日期
用户可以在此处添加所需数量的评论。