Django保存问题会覆盖最后一个条目

时间:2013-01-29 12:18:10

标签: django

任何人都可以看到下面代码的任何问题吗?这是我的模型的保存功能,它在第一次保存时为它们提供GUID。我的问题是当我保存一个新收件人(在管理员中)时,它会覆盖最后添加的收件人。更新似乎完美的工作。

Models.py的一部分

class GUID():
    make = hashlib.sha1(str(random.random())).hexdigest()


def save(self, *args, **kwargs):
    if not self.recipientid:
        self.recipientid = GUID.make
    super(Recipient, self).save(*args, **kwargs)

2 个答案:

答案 0 :(得分:2)

GUID.make将在GUID类创建时设置,每次运行时都不会重新计算。我不知道你如何使用GUID的其余背景,但我有它是一个函数:

class GUID(object):
    @staticmethod
    def make():
         return hashlib.sha1(str(random.random())).hexdigest()

...

def save(self, *args, **kwargs):
    if not self.recipientid:
        self.recipientid = GUID.make()
    super(Recipient, self).save(*args, **kwargs)

答案 1 :(得分:1)

一般来说,你要做的事情的方法是使用默认的lambda(在这个例子中使用标准的python uuid):

from django.db import models
from uuid import uuid4

class YourModel(models.Model):
    # ...
    recipientid = models.CharField(max_length=32, default=lambda: uuid4().hex)