Django模型外键在同一个表中

时间:2017-07-27 20:20:04

标签: django

在将此类修改发送到我的数据库之前,我只想知道我做的是否合适。

class Comments(models.Model):
    text = models.CharField(max_length=300, null=False)
    image = models.FileField(upload_to=user_directory_path_comments, validators=[validate_file_extension], blank=True, null=True)
    articles = models.ForeignKey(Articles, verbose_name="Article", null=False)
    author = models.ForeignKey(User, verbose_name="Auteur")
    in_answer_to = models.ForeignKey(Comments, verbose_name="En réponse au commentaire", blank=True, null=True)
    date = models.DateTimeField(auto_now_add=True, auto_now=False, verbose_name="Date de création")
    update = models.DateTimeField(auto_now=True, verbose_name="Dernière modification")

    def __str__(self):
        return self.text

我有一个名为Comments的模型,用于列出我文章博客中的评论。我想添加回复评论的功能,所以我添加了一个字段名称,如果是答案,我会添加评论的ID。

那么,如果我添加一个外键字段,知道它是关于同一个表的话,这样可以吗?这不是真正的外键吗?

1 个答案:

答案 0 :(得分:2)

您可以拥有引用相同模型的ForeignKey,但在这种情况下,您应该使用'self'作为othermodel参数。

来自the documentation

  

要创建递归关系 - 与自身具有多对一关系的对象 - 请使用models.ForeignKey('self', on_delete=models.CASCADE)