Django用户配置文件-默认值取决于所选用户

时间:2018-07-08 15:06:53

标签: django

我想创建个人档案扩展用户模型。

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?基本上,我每次更改用户时都需要更改默认值。有可能吗?

1 个答案:

答案 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,了解更多信息