10

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.

4

2 に答える 2

5

_createHash()モデルを定義するときに呼び出されるため、新しいオブジェクトを作成するたびに同じデフォルトになります。

save()モデルのメソッドでハッシュを作成する方法を見ることができます。これがおそらく最も簡単です。

于 2013-05-31T09:24:27.830 に答える