【发布时间】:2014-01-23 19:02:42
【问题描述】:
我正在尝试制作一个简单的树应用程序,它接受用户的输入并根据输入将节点添加到树结构中。我希望树的每个节点都是通用模型的一个实例,称为节点。
一个条目最多有两个部分:一个父项,它是字符串的开头直到第一个括号,另一个子项,它在括号中。
例如,假设用户输入以下内容:
"animal(cat)"
"animal(dog)"
"dog(golden retriever)"
"organic_life_form(animal)"
这应该会生成一个这种结构的树:
organic_life_form
|
animal
/ \
dog cat
|
golden retriever
我在定义“节点”模型时犯了一个错误,但我不确定如何修复它。
class Node(models.Model):
name = models.CharField(max_length=200)
parent = models.ForeignKey(Node)
nodes = models.IntegerField(default=0)
def __unicode__(self):
return self.name
显然我不允许使用另一个节点作为我的外键“父”,因为“节点”尚未定义。这似乎是一个非常基本的错误,但我仍然不明白为什么不允许这样做。
谁能解释为什么我不能使用另一个“节点”作为外键?如果这是一个失败的原因,有什么更好的方法来定义我想要的结构类型?
【问题讨论】: