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

时间:2015-01-06 17:32:28

标签: django serialization django-rest-framework one-to-one

我有一个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")

1 个答案:

答案 0 :(得分: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
                 )

您也可以使用serializers.ModelSerializer

class PersonSerializer(serializers.ModelSerializer):
   #-------------------------