Django:总是从损坏的模型中查询新的 objects returns IndexError

Django: querying new objects from corrupted model always returns IndexError

我的一个模特行为异常。如果有任何 objects,并且我尝试以任何方式访问它们(包括在管理界面或 shell 中),即使它们刚刚创建,我也会收到 IndexError.

下面是 shell 中的示例命令:

>Path.objects.all().delete()

>Path.objects.all()

[]

>路径=路径(标题="test")

>path.save()

>路径

repr(xxxx.models.Path at 0x7f1601f79910>) 失败: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

我之前一直在使用保存覆盖,但删除了它。

它清楚地表明返回错误的行是:

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

不要直接索引节点。尝试确定节点中是否有任何元素的代码与此类似:

nodes[0].title if nodes else None