2015-01-03 27 views
-1

我的一個模型奇怪地行事。如果有任何對象,並且我嘗試以任何方式訪問它們(包括在管理界面或shell中),即使它們剛創建,我也會得到一個IndexError。 。Django:從損壞的模型中查詢新對象總是返回IndexError

這裏的示例中的外殼命令:

> Path.objects.all()刪除()

> Path.objects.all()

[]

> path = Path(title =「test」)

> path.save()

>路徑

再版(在0x7f1601f79910 xxxx.models.Path>)失敗:IndexError:列表索引超出範圍>

我知道這是沒有足夠的信息來弄清楚發生了什麼,但我不確定這是與什麼有關,所以如果有人看到這樣的事情,請讓我知道我應該包括哪些其他信息。

以防萬一,這裏是模型:

class Path(models.Model): 

    title = models.CharField(max_length=200, blank=True, null=True) 
    nodes = models.ManyToManyField(Node, related_name="nodes",through='PathNodeRelationship') 

    def __unicode__(self): 
    nodes = self.nodes.all() 
    return nodes[0].title + " - " + nodes[len(nodes)-1].title 

我一直在努力與先前保存覆蓋,但刪除了它。

回答

2

這清楚地表明,正在返回錯誤的路線是:

return nodes[0].title + " - " + nodes[len(nodes)-1].title 

不會直接索引節點。嘗試確定節點中是否有任何與代碼類似的元素:

nodes[0].title if nodes else None 
+0

哦,我的天哪,這是一個STUPID錯誤。我認爲這與保存有關。 – user3234309