我有一个这样的模型:
class Book(models.Model):
hash = models.CharField(max_length=56, unique=True, null=True, editable=False)
created_at = models.DateTimeField('Created at', auto_now_add=True)
# .. and other fields
def save(self):
if self.hash is None:
string_seed = str(self.created_at).encode('utf-8') + str(self.pk).encode('utf-8')
self.hash = hashlib.sha224(string_seed).hexdigest()
super(Book, self).save()
但是在输入第二个数据(在本例中是书)后,我一直收到此错误"Duplicate entry 'c19c...abb5' for key 'store_book_hash_4517c5ea_uniq'"
。我不知道为什么我的代码会产生相同的价值。
我使用django管理页面进行数据输入,我想通过"添加书籍#34;在django admin中的表单,self.hash
应始终为None
,因此新生成的新随机值(但在我的情况下,它不会反而导致完整性错误)。我很困惑
答案 0 :(得分:0)
Omg,我真的没有注意到>> a = [1,2,3,4,1,2,1]
>> del a[a.index(min(a))]
>> a
[2, 3, 4, 1, 2, 1]
将始终包含string_seed
,因此值始终是相同的。我选择的解决方法是使用'NoneNone'
:
datetime
或先致电string_seed = str(datetime.datetime.now()).encode('utf-8')
。