Python 尝试保存模型实例时出现KeyError。德扬戈

Python 尝试保存模型实例时出现KeyError。德扬戈,python,django,signals,Python,Django,Signals,尝试保存模型实例时出现KeyError。 它必须对post_保存信号做出反应,而不是保存实例 代码: 错误: Exception Type: KeyError at /admin/playlist/playlistentry/add/ Exception Value: 38539456 根据您的评论,您试图做的是更新排序。替代save方法,而不是使用信号 def save(self, *args, **kwargs): # Only do this if it's the first

尝试保存模型实例时出现KeyError。 它必须对post_保存信号做出反应,而不是保存实例

代码:

错误:

Exception Type: KeyError at /admin/playlist/playlistentry/add/
Exception Value: 38539456

根据您的评论,您试图做的是更新排序。替代save方法,而不是使用信号

def save(self, *args, **kwargs):
    # Only do this if it's the first time we're saving.
    if not self.id:
        entries = PlaylistEntry.objects.order_by('-order')
        try:
            self.order = entries[0].order + 1
        except IndexError:
            # we don't have any PlaylistEntries yet, so we just start @ 0
            self.order = 0

    super(PlaylistEntry, self).save(*args, **kwargs) 

还有,为什么您的订单默认为900万。。。您不应该从0开始吗?

对于实现排序,您也可以查看一下

你能发布完整的堆栈跟踪吗?你想用这个信号做什么?现在它似乎没有做任何有用的事情。我只想在添加新条目时进行自动增量排序。删除其中一个播放入口时结束重新计数顺序。我明白问题所在。它的无限循环如何实现?关键字段的自动递增已经是Django的一部分。为什么要建立自己的?而且为什么不使用
save
方法?通常要简单得多。
def save(self, *args, **kwargs):
    # Only do this if it's the first time we're saving.
    if not self.id:
        entries = PlaylistEntry.objects.order_by('-order')
        try:
            self.order = entries[0].order + 1
        except IndexError:
            # we don't have any PlaylistEntries yet, so we just start @ 0
            self.order = 0

    super(PlaylistEntry, self).save(*args, **kwargs)