如何通过 django rest api 中的一个序列化程序发布多个模型数据

Mah*_*fuz 3 api django serialization python-3.x django-rest-framework

我有两个模型,Contact并且User

class Contact(models.Model):
    name = models.CharField(max_length=50, blank=True)
    status = models.BooleanField(default=False)

class User(models.Model):
    username = models.CharField(max_length=50, blank=True)
    password = models.CharField(max_length=50, blank=True)
    contact_id = models.ForeignKey(Contact, on_delete=models.CASCADE, blank=True, null=True)
Run Code Online (Sandbox Code Playgroud)

对于这两个模型,我有两个序列化器类:

class ContactSerializerModel(serializers.ModelSerializer):
    class Meta:
        model = Contact
        fields = ('name', 'status')

class UserSerializerModel(serializers.ModelSerializer):
    class Meta:
        model = User
        fields = ('username', 'password','contact_id')
Run Code Online (Sandbox Code Playgroud)

我想设计一个串行类需要nameusernamepassword,和status领域。我想将它们作为键值对发布。第一namestatus值保存在Contact模型然后用Contact模型id保存username,并passwordUser表中。如何在 Django rest API 中设计序列化器类?

nev*_*ner 8

您需要在create里面覆盖方法UserSerializerModel

class UserSerializerModel(serializers.ModelSerializer):
    contact_id = ContactSerializerModel()
    class Meta:
        model = User
        fields = (
          'username',
          'password',
          'contact_id'
        )

    def create(self, validated_data):
        contact_data = validated_data.pop('contact_id')  
        contact = Contact.objects.create(**contact_data)
        user = User.objects.create(contact_id=contact, **validated_data)
        return user
Run Code Online (Sandbox Code Playgroud)

在此处查看详细信息。