Нужна помощь TypeError at /register/

Нужна помощь в решении этой ошибки. Я не знаю, что я делаю неправильно в этом коде python. Любой отзыв будет полезен

TypeError at /register/ Получили TypeError при вызове User.objects.create(). Это может быть связано с тем, что в классе сериализатора есть поле, доступное для записи, которое не является допустимым аргументом для User.objects.create(). Возможно, вам нужно сделать поле доступным только для чтения или переопределить метод RegisterSerializer.create(), чтобы правильно обработать это. Оригинальное исключение: Traceback (последний последний вызов): File "/Users/bishnukandel/Desktop/ISQA8380/lab4part3/venv/lib/python3.7/site-packages/rest_framework/serializers.py", line 917, in create instance = ModelClass.objects.create(**validated_data) Файл "/Users/bishnukandel/Desktop/ISQA8380/lab4part3/venv/lib/python3.7/site-packages/django/db/models/manager.py", строка 82, in manager_method return getattr(self.get_queryset(), name)(*args, **kwargs) Файл "/Users/bishnukandel/Desktop/ISQA8380/lab4part3/venv/lib/python3.7/site-packages/django/db/models/query.py", строка 411, in create obj = self.model(**kwargs) File "/Users/bishnukandel/Desktop/ISQA8380/lab4part3/venv/lib/python3.7/site-packages/django/db/models/base.py", line 484, in init raise TypeError("'%s' is an invalid keyword argument for this function" % kwarg) TypeError: 'password2' является недопустимым аргументом ключевого слова для этой функции

view.py

serializers.py

from rest_framework import serializers
from .models import Customer, Investment, Stock,User
from django.contrib.auth.password_validation import validate_password
from rest_framework import serializers
from rest_framework.validators import UniqueValidator

class CustomerSerializer(serializers.ModelSerializer):

    class Meta:
        model = Customer

        fields = ('pk','name', 'address','cust_number' , 'city', 'state', 'zipcode', 'email', 'cell_phone')

class InvestmentSerializer(serializers.ModelSerializer):
    class Meta:
        model = Investment
        fields = ('pk','customer', 'category', 'description', 'acquired_value', 'acquired_date', 'recent_value', 'recent_date')


class StockSerializer(serializers.ModelSerializer):

    class Meta:
        model = Stock
        fields = ('pk','customer', 'cust_number', 'symbol', 'name', 'shares', 'purchase_price', 'purchase_date')

class RegisterSerializer(serializers.ModelSerializer):
    email = serializers.EmailField(
        required=True,
        validators=[UniqueValidator(queryset=User.objects.all())]
    )
    password = serializers.CharField(write_only=True, required=True, style={'input_type': 'password'},
                                     validators=[validate_password])
    password2 = serializers.CharField(write_only=True, style={'input_type': 'password'}, required=True)

    class Meta:
        model =User
        fields = ('username', 'password', 'password2', 'email', 'first_name', 'last_name')
        extra_kwargs = {
            'first_name': {'required': True},
            'last_name': {'required': True},
            'password': {'write_only': True, 'min_length': 6},
            'password2': {'write_only': True, 'min_length': 6}
        }

    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'],
        email=validated_data['email'],
        first_name=validated_data['first_name'],
        last_name=validated_data['last_name']
    )
    user.set_password(validated_data['password'])
    user.save()

    return user

model.py

admin.py

from django.contrib import admin
from .models import Customer, Investment, Stock

class CustomerList(admin.ModelAdmin):
    list_display = ('cust_number', 'name', 'city', 'cell_phone')
    list_filter = ('cust_number', 'name', 'city')
    search_fields = ('cust_number', 'name')
    ordering = ['cust_number']


class InvestmentList(admin.ModelAdmin)
    list_display = ('customer', 'category', 'description', 'recent_value')
    list_filter = ('customer', 'category')
    search_fields = ('customer', 'category')
    ordering = ['customer']


class StockList(admin.ModelAdmin):
    list_display = ('customer','symbol', 'name', 'shares', 'purchase_price')
    list_filter = ('customer','symbol', 'name')
    search_fields = ('customer','symbol', 'name')
    ordering = ['customer']


admin.site.register(Customer, CustomerList)
admin.site.register(Investment, InvestmentList)
admin.site.register(Stock, StockList)

urls.py

from django.contrib import admin
from django.urls import path

from django.conf.urls import url
from rest_framework_jwt.views import obtain_jwt_token
from portfolio import views

urlpatterns = [

    path('admin/', admin.site.urls),
    path('auth/', obtain_jwt_token),
    path('', views.customer_list),
    url(r'^api/customers/$', views.customer_list),
    url(r'^api/customers/(?P<pk>[0-9]+)$', views.getCustomer),
    path('investments/', views.investment_list),
    url(r'^api/investments/$', views.investment_list),
    url(r'^api/investments/(?P<pk>[0-9]+)$', views.getInvestment),
    path('stocks/', views.stock_list),
    url(r'^api/stocks/$', views.stock_list),
    url(r'^api/stocks/(?P<pk>[0-9]+)$', views.getStock),
    path('register/', views.RegisterView.as_view(), name='auth_register'),
]

Вернуться на верх