如何使用Rest Framework序列化Django中的关系OneToOne?

Wit*_*cio 1 django serialization one-to-one django-rest-framework

我有一个PersonProfile类和一个Person类.在类Person中,我与PersonProfile有一个关系OneToOne.我如何序列化?

class PersonProfile(models.Model):
    interests = models.CharField(max_length=200, blank=True)
    researchLines = models.CharField(max_length=200, blank=True)
    loginName = models.CharField(max_length=50, blank=True)

class Person(models.Model):
    profile = models.OneToOneField(PersonProfile)
    enviroment = models.ForeignKey(Enviroment, related_name="persons")
Run Code Online (Sandbox Code Playgroud)

Pra*_*aur 5

您可以创建自定义序列化程序字段以创建自定义PersonSerializer.您可以添加字段以从中获取值Enviroment.

class PersonSerializer(serializers.HyperlinkedModelSerializer):
    interests = serializers.CharField(source='profile.interests')
    researchLines = serializers.CharField(source='profile.researchLines')
    loginName = serializers.CharField(source='profile.loginName')
    # --- FIELDS FOR enviroment 
    class Meta:
        model = Person
        fields = ('interests', 'researchLines', 'loginName',
                 #-- enviroment fields
                 )
Run Code Online (Sandbox Code Playgroud)

你也可以使用 serializers.ModelSerializer

class PersonSerializer(serializers.ModelSerializer):
   #-------------------------
Run Code Online (Sandbox Code Playgroud)