如何创建具有相互连接的多个模型的序列化器?

发布于 2025-01-23 10:00:36 字数 2461 浏览 0 评论 0原文

因此,我拥有具有此字段的用户量表模型:

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

所以我的问题是如何为注册创建序列化器?我应该如何创建一个将用户量表作为外键的用户量表和患者??? 请帮助这是我的文凭工作,

这也不起作用

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

,我应该如何在Postman中发送数据? 像这样?

{
    "patient": {
        "district": "2323232",
        "user": [{
            "email": "[email protected]",
            "iin": "02020202002",
            "first_name": "Some",
            "last_name": "Somee",
            "father_name": "Someuly",
            "phone_number": "+72783928932",
            "password": "password",
            "re_password": "password"
        }]
    }
}

So I have UserAccount model, which has this fields:

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

And also this class that has user as a foreign key:

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

So my question is how to create a serializer for the registration? How am I supposed to create a UserAccount and Patient which has UserAccount as a foreign key together???
PLS HELP This is my diploma work

THIS DOES NOT WORK

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

Also, how am I supposed to send data in POSTMAN?
LIKE THIS?

{
    "patient": {
        "district": "2323232",
        "user": [{
            "email": "[email protected]",
            "iin": "02020202002",
            "first_name": "Some",
            "last_name": "Somee",
            "father_name": "Someuly",
            "phone_number": "+72783928932",
            "password": "password",
            "re_password": "password"
        }]
    }
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

葬花如无物 2025-01-30 10:00:36

一切都很好,但是患者创造力不应放置在内部,

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

添加患者。用户外键params reside_name = patiend。
是否将是“诸如“非领域的患者”之类的错误 - 手工描述字段

All OK, but PatientCreateSerializer shouldn't place inside

For example

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

And add in patient.user foreign key params related_name=patiend.
If will be errors like "patient in not fields" - description fields by hand

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文