0

任何人都可以看到下面的代码有任何问题吗?这是我的模型保存功能,它在第一次保存时为他们提供了 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)
4

2 回答 2

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)
于 2013-01-29T12:38:43.443 回答
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)
于 2013-01-29T12:21:20.713 回答