提供唯一ID时超过最大递归深度

2 投票
1 回答
684 浏览
提问于 2025-04-16 05:52

我想给数据库中不同类别的模型提供唯一的ID。所以我创建了一个虚拟模型:

class GUUID(models.Model):
    guuid = models.PositiveSmallIntegerField(_(u"Dummy GUUID"), default=1)

然后在我想要拥有唯一ID的模型中:

class Event(models.Model): 
    unique = models.IntegerField(blank=False, editable=False)  

    def save(self):
        guuid = GUUID()
        guuid.save()
        self.unique = guuid.id
        self.save()

但是在保存我的模型时,我遇到了这个错误:
调用Python对象时超出了最大递归深度,而且数据库中有997个QUUID对象。为什么会这样呢?

1 个回答

6

我觉得你可以把 self.save() 替换成 super(Event, self).save()。另外,从事件的保存方法中获取参数并传递上去也是个不错的主意:

def save(self, *args, **kwargs):
    #... other code here
    super(Event, self).save(*args, **kwargs)

撰写回答