Ошибочный запрос при сериализации данных

Я создаю конечные точки API для приложения электронной коммерции B2B. У меня есть модель компании для хранения данных о компаниях, которые создают аккаунт. Я связал модель компании с моделью пользователя по умолчанию в django, так что учетная запись пользователя будет создана вместе с объектом компании. Я связал модель компании и модель пользователя (отношения "один к одному"). Я продолжаю получать эту ошибку, "Bad Request: /accounts/create/", когда я отправляю данные через просматриваемый API.

Это моя модель.

from django.db import models
from django.contrib.auth.models import User

# Create your models here.


class Company(models.Model):
    class IndustryType(models.TextChoices):
        MANUFACTURING = "MAN", "Manufacturing"
        CONSTRUCTION = "CON", "Construction"
        IT = "IT", "Information Technology"
        PROFESSIONAL_SERVICES = "PS", "Professional Services"
        HEALTHCARE = "HC", "Healthcare"
        FINANCIAL_SERVICES = "FS", "Financial Services"
        WHOLESALE_AND_DISTRIBUTION = "WD", "Wholesale and Distribution"
        RETAIL = "RET", "Retail"
        EDUCATION = "EDU", "Education"

    user = models.OneToOneField(User, on_delete=models.CASCADE)
    company_name = models.CharField(max_length=255)
    industry_type = models.CharField(max_length=255, choices=IndustryType.choices)
    tax_identification_number = models.CharField(max_length=15)
    address = models.CharField(max_length=255)
    phone = models.CharField(max_length=50)
    email = models.EmailField()

    def __str__(self):
        return self.company_name

Это мой сериализатор

from rest_framework import serializers
from django.contrib.auth.models import User
from .models import Company


class CompanySerializer(serializers.ModelSerializer):

    class Meta:
        model = Company
        fields = (

            "company_name",
            "industry_type",
            "tax_identification_number",
            "address",
            "phone",
            "email",
        )


class SignUpSerializer(serializers.ModelSerializer):
    password1 = serializers.CharField(style={"input_type": "password"}, write_only=True)
    password2 = serializers.CharField(style={"input_type": "password"}, write_only=True)
    company = CompanySerializer()

    class Meta:
        model = User
        fields = (

            "username",
            "password1",
            "password2",
            "company"
        )


    def create(self, validated_data):
        try:
            user = User.objects.create(username=validated_data["username"])
            user.set_password(validated_data["password1"])
            user.save()
            company_data = validated_data.pop('company')
            company_data['user'] = user
            company_serializer = CompanySerializer(data=company_data)

            if company_serializer.is_valid():
             
                company = company_serializer.save(user=user)

            else:
               
                raise serializers.ValidationError(company_serializer.errors)
        except IntegrityError:
           
            raise serializers.ValidationError(
                company_serializer.errors
            )
        return user

Это мое мнение

from rest_framework import generics, permissions, authentication
from rest_framework.response import Response
from .serializer import SignUpSerializer


class SignUpView(generics.CreateAPIView):
    serializer_class = SignUpSerializer
    permission_classes = [permissions.AllowAny]

    def create(self, request, *args, **kwargs):
        serializer = self.get_serializer(data=request.data)
        serializer.is_valid(raise_exception=True)
        self.perform_create(serializer)
        headers = self.get_success_headers(serializer.data)

        return Response(serializer.data, headers=headers)

Интерфейс представления данных Неправильный запрос

Когда я проверяю базу данных. Объект пользователя сохранен успешно, но объект компании не сохранен.

Пожалуйста, что я делаю неправильно.

Я проверил, что company_serializer.is_valid() возвращает 'True', распечатав его. Я также распечатал company_serializer, и результат показан ниже. Если сериализатор компании содержит данные, почему данные не сохраняются в режиме компании.

CompanySerializer(data=OrderedDict([('company_name', 'Peers In Tech'), ('industry_type', 'WD'), ('tax_identification_number', '01210884B'), ('address', 'afdfads'), ('phone', '0547145189'), ('email', 'abdulbasitm810@gmail.com'), ('user', <User: stackuser>)])):
    company_name = CharField(max_length=255)
    industry_type = ChoiceField(choices=[('MAN', 'Manufacturing'), ('CON', 'Construction'), ('IT', 'Information Technology'), ('PS', 'Professional Services'), ('HC', 'Healthcare'), ('FS', 'Financial Services'), ('WD', 'Wholesale and Distribution'), ('RET', 'Retail'), ('EDU', 'Education')])
    tax_identification_number = CharField(max_length=15)
    address = CharField(max_length=255)
    phone = CharField(max_length=50)
    email = EmailField(max_length=254)

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