python - 具有默认值的自定义 Django 用户
问题描述
我正在使用带有 Restframework 的 Django 3.2。我为我的项目创建了一个自定义用户模型,并在模型中为某些字段提供了默认值。
但是发出 POST 请求时不接受默认值。例如,“date_joined”留空,那么它必须是今天的日期,但是在向邮递员提出请求时,它将它作为必填字段。在定义自定义用户时有什么遗漏吗?
模型.py
class MasterUser(AbstractBaseUser):
email = models.EmailField(verbose_name='email address',max_length=255,unique=True,)
is_active = models.BooleanField(default=True)
is_admin = models.BooleanField(default=False)
firstname = models.CharField(max_length=100,blank=True)
lastname = models.CharField(max_length=100,blank=True)
is_member = models.BooleanField(default=False)
date_joined = models.DateField(default=datetime.now)
contact = models.CharField(max_length=100, blank=True, unique=True)
membership_id = models.CharField(max_length=100, blank=True)
objects = MyUserManager()
串行器
class RegisterUserSerializer(serializers.ModelSerializer):
...
...
def save(self):
timestamp = int(datetime.now(tz=timezone.utc).timestamp()*1000)
account = MasterUser(
email = self.validated_data['email'],
firstname = self.validated_data['firstname'],
lastname = self.validated_data['lastname'],
is_member = self.validated_data['is_member'],
date_joined = self.validated_data['date_joined'],
membership_id = hashString(str(timestamp))
)
password = self.validated_data['password']
password2 = self.validated_data['password2']
if password != password2:
raise serializers.ValidationError({'password': 'Password doesnt matches'})
account.set_password(password)
account.save()
return account
视图.py
def registration_view(request):
if request.method == "POST":
is_member = request.POST.get('is_member')
timestamp = int(datetime.now(tz=timezone.utc).timestamp()*1000)
serializer = RegisterUserSerializer(data= request.data)
data = {}
if serializer.is_valid():
account = serializer.save()
data['response'] = "Successfully registered new user!"
data['email'] = account.email
data['firstname'] = account.firstname
else:
data = serializer.errors
return Response(data)
解决方案
推荐阅读
- powershell - 如何为 Azure Sql 数据库弹性池中的所有数据库设置 PITR?
- javascript - 提升变量是否有目的?
- python - 当用户在 django 中注销时,如何拒绝访问上一页?
- node.js - Node.Js AWS SES - 发送电子邮件时的 ETIMEDOUT
- wordpress - REQUEST_FILENAME 重定向本地图像
- python - 模块“caffe”没有属性“set_mode_gpu”
- python - 即使出现导入错误,使用 import __main__ 运行 python 项目?
- string - Bash 格式字符串。用值替换占位符。
- javascript - 通过 RGB 确定颜色亮度
- c++ - 为什么在 CodeBlocks 上会发生这种情况?