我正在尝试为我的 10 位 Django 模型生成唯一的 HASH 值,我已经尝试过这些方法,但出现此错误
return Database.Cursor.execute(self, query, params)
django.db.utils.IntegrityError: column hash_3 is not unique
这是我尝试过的:
import os
import time
import hashlib
from os import path
from binascii import hexlify
from django.db import models
from django.contrib import admin
from django.core.files.storage import FileSystemStorage
#------------------------------------------------------------------------------
def _createHash():
"""This function generate 10 character long hash"""
hash = hashlib.sha1()
hash.update(str(time.time()))
return hash.hexdigest()[:-10]
class tags(models.Model):
""" This is the tag model """
seo_url1 = models.URLField()
seo_url2 = models.URLField()
seo_url3 = models.URLField()
tagDescription = models.TextField() # Tag Description
tag = models.CharField(max_length=200) # Tag name
tagSlug = models.CharField(max_length=400) # Extra info can be added to the existing tag using this field
updatedAt = models.DateTimeField(auto_now=True) # Time at which tag is updated
createdAt = models.DateTimeField(auto_now_add=True) # Time at which tag is created
hash_1 = models.CharField(max_length=10,default=_createHash(),unique=True)
hash_2 = models.CharField(max_length=10,default=_createHash(),unique=True)
hash_3 = models.CharField(max_length=10,default=_createHash(),unique=True)
我也尝试过这个方法:
def _createHash():
"""This function generate 10 character long hash"""
return hexlify(os.urandom(5))
我有一个脚本,每次运行脚本时都会将数据插入到该模型中,我收到上述错误..有其他方法可以做到这一点..我想将唯一的哈希值存储到列中hash_1,hash_2,hash_3
.
不要打电话给_createHash()
在您的领域中运行函数,但只需传递对模型中可调用函数的引用,例如
hash_1 = models.CharField(max_length=10,default=_createHash,unique=True)
正如 Lennart Regebro 在他的回答中提到的,每次尝试启动服务器时,您都会获得相同的值。
The Django 文档对此说一下:
字段.默认值
该字段的默认值。这可以是一个值或
一个可调用的对象。如果可调用,每次新创建时都会调用它
对象被创建。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)