【问题标题】:Django issue saving data to databaseDjango 问题保存数据到数据库
【发布时间】:2022-11-30 20:18:16
【问题描述】:

用户名正在保存,但名字、电子邮件等信息没有。

`from django.contrib.auth.models import User
from django.contrib.auth.password_validation import validate_password
from rest_framework import serializers


class RegisterSerializer(serializers.ModelSerializer):

    email = serializers.CharField(required=True)
    first_name = serializers.CharField(max_length=50, required=True)
    last_name = serializers.CharField(max_length=50, required=True)
    password = serializers.CharField(
        write_only=True, required=True, validators=[validate_password])
    password2 = serializers.CharField(write_only=True, required=True)
    is_admin = serializers.BooleanField(default=False)

    class Meta:
        model = User
        fields = ('username', 'first_name', 'last_name', 'email',
                  'password', 'password2', 'is_admin')

    def validate(self, attrs):
        if attrs['password'] != attrs['password2']:
            raise serializers.ValidationError(
                {"password": "Password fields didn't match."})

        return attrs

    def create(self, validated_data):
        user = User.objects.create(
            username=validated_data['username']
        )

        user.set_password(validated_data['password'])
        user.save()

        return user`

我在网上搜索了几个小时,但没有取得太大进展。如果有人可以详细说明我的问题并解释我做错了什么,将不胜感激

【问题讨论】:

    标签: python reactjs django


    【解决方案1】:

    在创建方法中添加模型中存在的所有需要​​创建的字段

    user = User.objects.create(
        username=validated_data['username'],   
        first_name =validated_data['first_name'],
        last_name =validated_data['last_name'],  
        # Add other fields here
    )
    

    【讨论】:

      【解决方案2】:

      您还应该将其他经过验证的数据发送到创建行:

      def create(self, validated_data):
              user = User.objects.create(
                  username=validated_data['username'],
                  first_name=validated_data['first_name'], # <-- add here to all necessary parameters like this
              )
      
              user.set_password(validated_data['password'])
              user.save()
      

      【讨论】:

        猜你喜欢
        • 2023-02-04
        • 2017-09-04
        • 2021-04-28
        • 2017-05-13
        • 1970-01-01
        • 1970-01-01
        • 2013-08-23
        • 2016-02-01
        • 1970-01-01
        相关资源
        最近更新 更多