Как создать сериализатор с несколькими моделями, которые связаны друг с другом?

Так, у меня есть модель UserAccount, которая имеет следующие поля:

class UserAccount(AbstractBaseUser, PermissionsMixin):
    
    email = models.EmailField(max_length=255, unique=True)
    iin = models.CharField(max_length=255, unique=True)
    first_name = models.CharField(max_length=255)
    last_name = models.CharField(max_length=255)
    father_name = models.CharField(max_length=255)
    phone_number = models.CharField(max_length=255)
    is_active = models.BooleanField(default=True)
    is_staff = models.BooleanField(default=False)
    is_superuser = models.BooleanField(default=False)
    is_doctor = models.BooleanField(default=False)

    objects = UserAccountManager()

    USERNAME_FIELD = 'email'
    REQUIRED_FIELDS = ['iin', 'first_name', 'last_name','father_name', 'phone_number']

    def get_full_name(self):
        return self.first_name + ' ' + self.last_name + ' ' + self.father_name

    def __str__(self):
        return self.email

А также этот класс, который имеет пользователя в качестве внешнего ключа:

class Patient(models.Model):
    user = models.ForeignKey(UserAccount, on_delete=models.CASCADE)
    district = models.CharField(max_length=255)

    def __str__(self):
        return self.user.email

Мой вопрос заключается в том, как создать сериализатор для регистрации? Как я могу создать UserAccount и Patient, у которого UserAccount является внешним ключом, вместе? PLS HELP Это моя дипломная работа

<
class RegistrationSerializer(serializers.ModelSerializer):

    class PatientCreateSerializer(serializers.ModelSerializer):
        
        class Meta:
            model = Patient
            exclude = ['user']
        
    patient = PatientCreateSerializer()

    class Meta:
        model = UserAccount
        fields = '__all__'

    def create(self, validated_data):
        patient_data = validated_data.pop('patient')
        user_instance = UserAccount.objects.create(**validated_data)
        Patient.objects.create(user=user_instance,**patient_data)

        return user_instance
<
{
    "patient": {
        "district": "2323232",
        "user": [{
            "email": "someemail@gmail.com",
            "iin": "02020202002",
            "first_name": "Some",
            "last_name": "Somee",
            "father_name": "Someuly",
            "phone_number": "+72783928932",
            "password": "password",
            "re_password": "password"
        }]
    }
}

Все хорошо, но PatientCreateSerializer не должен размещаться внутри

Например

class PatientCreateSerializer(serializers.ModelSerializer):
    
    class Meta:
        model = Patient
        exclude = ['user']

class RegistrationSerializer(serializers.ModelSerializer):   
    patient = PatientCreateSerializer()

    class Meta:
        model = UserAccount
        fields = '__all__'

    def create(self, validated_data):
        patient_data = validated_data.pop('patient')
        user_instance = UserAccount.objects.create(**validated_data)
        Patient.objects.create(user=user_instance,**patient_data)

        return user_instance

И добавить в patient.user foreign key params related_name=patiend. Если будут ошибки типа "patient in not fields" - опишите поля вручную

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