Tôi muốn sử dụng các băm duy nhất cho mỗi mô hình thay vì các id.Tạo các băm duy nhất cho các kiểu django
Tôi đã thực hiện chức năng sau để sử dụng nó trên bảng dễ dàng.
import random,hashlib
from base64 import urlsafe_b64encode
def set_unique_random_value(model_object,field_name='hash_uuid',length=5,use_sha=True,urlencode=False):
while 1:
uuid_number = str(random.random())[2:]
uuid = hashlib.sha256(uuid_number).hexdigest() if use_sha else uuid_number
uuid = uuid[:length]
if urlencode:
uuid = urlsafe_b64encode(uuid)[:-1]
hash_id_dict = {field_name:uuid}
try:
model_object.__class__.objects.get(**hash_id_dict)
except model_object.__class__.DoesNotExist:
setattr(model_object,field_name,uuid)
return
Tôi đang tìm kiếm phản hồi, tôi có thể làm gì khác? Làm thế nào tôi có thể cải thiện nó? Điều gì là tốt xấu và xấu xí về nó?
Bạn có thể vui lòng làm rõ: Bạn có cần băm ngẫu nhiên hoặc băm duy nhất không gian và thời gian không? Tôi hỏi bởi vì người dùng thường chỉ muốn trước đây nhưng sử dụng các thuật ngữ "duy nhất" và "ngẫu nhiên" thay thế cho nhau. – nikola
Bạn có thể đăng cập nhật về cách bạn đã sửa không? Tôi đang tìm kiếm một giải pháp. – Thomas
Thật điên rồ khi tạo một id duy nhất. Nếu làm uuid chỉ tạo ra một uuid và không thay đổi chiều dài hoặc bất cứ điều gì. Đặt mô hình của bạn để sử dụng trường đó làm khóa chính. Chỉ cần tạo một uuid khi lưu, đừng lo lắng về va chạm. – dalore