2012-11-01 242 views
1
  1. 为什么要创建一个递归关系?
  2.  
        aField = models.ForeignKey('self') 
    
  3. 这是与上面的一样吗?
 
     class aClass(models.Model): 
     aField = models.ForeignKey('aClass') 
+1

我不明白你的第一个问题。 “为什么我会创建...”。我们不知道为什么。 – sergzach

+1

1.如果你的模型对象应该形成某种关系,即在树中,除了根以外的每个对象都应该有一个父对象。 – Bula

回答

5
  1. 您可能需要创建一个递归关系,当你想拥有具有相同的模型结构父和子节点。例如,如果您有文字,数据及user_ID的评论:

    class Comment(models.Model): 
        text = models.TextField() 
        create_date_time = models.DateTimeField() 
        parent_comment = models.ForeignKey('self') 
    
  2. 我想是的(你可以尝试进行测试),但它不是一种好形式。如果您更改类名称,则必须更改括号中的字符串值。如果你使用'自我',你没有这个头痛。