我想创建个人档案扩展用户模型。
from django.db import models
from django.contrib.auth.models import User
from rest_framework.authtoken.models import Token
# Create your models here.
class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
operatorId = models.CharField(
max_length=50,
default= 'O'+str(user.id), #get user id
blank=False,
unique=True,
)
要添加operatorId
,这取决于所选的userId(运算符id i O和user.id作为字符串)。如何获取当前用户ID?基本上,我每次更改用户时都需要更改默认值。有可能吗?
答案 0 :(得分:0)
您应该覆盖save
方法
from django.db import models
from django.contrib.auth.models import User
from rest_framework.authtoken.models import Token
class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
operatorId = models.CharField(
max_length=50,
blank=False,
unique=True,
)
def save(self, *args, **kwargs):
self.operatorId = 'O'+str(self.user.id) # set operatorId here
super().save(*args, **kwargs)
请注意,覆盖save
有一个局限性:
不幸的是,创建或更新时没有解决方法 批量存储对象,因为save(),pre_save和post_save都不是 叫。
检查Django docs,了解更多信息