Python 尝试保存模型实例时出现KeyError。德扬戈
尝试保存模型实例时出现KeyError。 它必须对post_保存信号做出反应,而不是保存实例 代码: 错误: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
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)