繁体   English   中英

为什么我不断收到 Class ModelSerializer 缺少“元”属性?

[英]Why do I keep getting Class ModelSerializer missing "Meta" attribute?

每当我尝试访问我的注册序列化程序的视图时,我都会不断地发现我错过了 Meta 属性,即使它在那里。 我尝试对代码进行一些更改,但它似乎不起作用,所以这显然是我缺少的东西。

为什么会这样?

这是序列化程序:

class UserRegistrationSerializer(serializers.ModelSerializer):

   username = serializers.CharField(
       required=True,
       validators=[UniqueValidator(queryset=User.objects.all())]
   )

   email = serializers.ModelSerializer(
       required=True,
       validators=[UniqueValidator(queryset=User.objects.all())]
   )

   password = serializers.CharField(
       required=True,
       label="Password",
       style={'input_type': 'password'}
   )

   password_2 = serializers.CharField(
       required=True,
       label="Confirm Password",
       style={'input_type': 'password'}
   )

   class Meta(object):
       model = User
       fields = ['username', 'email', 'password', 'password_2',]

   def validate_password(self, value):
       if len(value) < 8:
           raise serializers.ValidationError(
               "Password should be at least 8 characters long.")
       return value

   def validate_password_2(self, value):
       data = self.get_initial()
       password = data.get('password')
       if password != value:
           raise serializers.ValidationError("Passwords doesn't match.")
       return value

   def validate_username(self, value):
       if User.objects.filter(username=value).exists():
           raise serializers.ValidationError("Username already exists.")
       return value

   def create(self, validated_data):

       user_data = {
           'username': validated_data.get('username'),
           'email' : validated_data.get('email'),
           'password': validated_data.get('password'),
       }

       user = User.objects.create_user(
               data=user_data,
               site=get_current_site(self.context['request'])
           )

       return validated_data

我认为它在 class 元中的元(对象)行,它应该是:

class Meta:
   model = User
   fields = ['username', 'email', 'password', 'password_2',]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM