我正在尝试扩展用户模型并添加一些字段,以下是我的方法:
dataLayer.push({
'event':'VirtualPageview',
'virtualPageURL':'/Thankyou.html',
'transactionId': ID,
'transactionAffiliation': '',
'transactionTotal': PRICE ,
'transactionProducts': [
{
sku: '',
name: '',
category: '',
price: '',
quantity: 1
}]
});
所以基本上有两种类型的用户Class UserProfile(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
mobile_number = models.CharField(max_length=20)
gender = models.CharField(max_length=2, choices=GENDER_CHOICES)
location = models.ForeignKey(Location, blank=True, null=True)
class User_One(UserProfile):
field_1 = models.CharField(max_length=20)
....
....
class User_Two(UserProfile):
field_1 = models.CharField(max_length=20)
....
....
和User_One
,现在只要我们将两种类型的用户保存到数据库中,就会发生以下情况
User_Two
模型记录,其中包含单独的值1,2,3等,User
模型记录
User_One
模型记录
醇>
因此,对于每个模型记录保存,Django或数据库都生成了id 1,2,3。
但是我要求User模型应该为id字段值生成User_Two
来代替整数,这可能吗?
我的意思是下面的内容
uuid
答案 0 :(得分:1)
使用uuid作为主键需要几个额外的步骤:
UUIDField
用于您的ID字段而不是InegerField
,因为uuid不是一个整数primary_key=True
要获取自定义用户模型,请将其子类化为django.contrib.auth.models.AbstractUser
并在您的设置中指定AUTH_USER_MODEL
:
import uuid
from django.contrib.auth.models import AbstractUser
from django.db import models
class UserProfile(AbstractUser):
id = models.UUIDField(primary_key=True, default=uuid.uuid4)
然后在您的设置文件中:
AUTH_USER_MODEL = 'youruserapp.UserProfile'
在进行任何迁移(创建数据库)之前执行此操作非常重要,否则这将无效。