2017-07-27 30 views
1

在将这种修改发送到我的数据库之前,我只想知道我所做的是否可以。同一张表中的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 

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

那么,如果我添加一个外键字段,知道它是关于同一个表吗?这不是一个外键?

回答

2

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

the documentation

要创建一个递归的关系 - 这与本身就是一个多到一个关系的对象 - 使用models.ForeignKey('self', on_delete=models.CASCADE)