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