首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何设置任意的类id键?

如何设置任意的类id键?
EN

Stack Overflow用户
提问于 2016-05-20 16:56:54
回答 1查看 41关注 0票数 0

我如何设置像id这样的东西,它是唯一的,并在创建对象后生成?

我想为每个对象分配标识符,这样user就可以通过这个id来识别产品,但我不希望它是常规的自动增量id,因为我希望它由10位数字组成。(我的pk是1,2...inf)。

到目前为止,我所做的是尝试创建该名称的散列,但这不是一个好方法。

代码语言:javascript
运行
复制
class Job(models.Model):
    job_id = models.BigIntegerField() # or hash(something)
    customer = models.ForeignKey(User, related_name='orders', help_text=_("Customer"), on_delete=models.CASCADE)
    translator = models.ForeignKey(User, related_name='jobs', null=True, blank=True, help_text=_(u"Translator"))
    price = models.FloatField(null=True, blank=True, help_text=_(u"Price"))

一种可能的方法是创建一个post_save signal,它将生成随机的10位数,然后检查唯一性,但这可能是非常耗时的解决方案。

EN

回答 1

Stack Overflow用户

发布于 2016-05-20 17:03:21

您可以改用UUIDField

用于存储通用唯一标识符的字段。使用Python的UUID类。在PostgreSQL上使用时,它以uuid数据类型存储,否则以char(32)存储。

通用唯一标识符是用于primary_key的AutoField的一个很好的替代方案。数据库不会为您生成UUID,建议使用default:

代码语言:javascript
运行
复制
import uuid
from django.db import models

class MyUUIDModel(models.Model):
    id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
    # other fields

你没有提到使用过的here,但是PostgreSQL对UUID有更好的支持,你可以阅读更多的RDMBS。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37342321

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档