我正在寻找一种在注册我的页面时将随机生成的数字字母组合分配给用户的方法。
因此,如果一个用户在我的网站上注册,则将有一个随机生成的数字字母组合(称为magic number
)分配给该用户并填充到PostgreSQL用户表中。
有通用的方法吗?
我是否必须在现有的类中定义此类功能,或者有不同的工作流程?
这是我的model
(继承自DjangosAbstractUser
模型):
from django.contrib.auth.models import AbstractUser
from django.db import models
class CustomUser(AbstractUser):
pass
first_name = models.CharField(max_length=500, blank=False)
last_name = models.CharField(max_length=30, blank=False)
def __str__(self):
return self.username
有通用的方法吗?
看起来您想要的是与通用唯一标识符(UUID) [wiki]有关的东西,它是一个128位的数字,通常用十六进制表示法表示。如果两个(或更多服务器)需要分配应该唯一的ID,但是他们不了解另一台服务器已经分配的ID,则通常使用此方法。严格来说,两个服务器可能会生成相同的UUID。但是,要生成大约2.71×10 18个数字,就必须有两个相同的UUID发生的可能性为50%,这看起来相当大,可以假设不会发生。
Django的最新版本有一个UUIDField
[Django-doc],可帮助您使用UUID。如所记录的,您可以将其与:
import uuid from django.db import models class MyUUIDModel(models.Model): id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
请注意,您本身并不需要将此作为主键。您还可以将其用作与主键一起使用的额外唯一值(例如,为此目的,slug也被称为somtimes):
import uuid
from django.db import models
class MyUUIDModel(models.Model):
uuid = models.UUIDField(unique=True, default=uuid.uuid4, editable=False)
例如,如果您想使用GenericForeignKey
[Django-doc],则可能需要使用原始主键。因为否则引用使用aUUIDField
和an的两个模型AutoField
可能会很麻烦。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句