Django Rest Framework - 序列化多个模型

时间:2014-09-24 15:15:12

标签: django django-rest-framework

我有两个模型,默认用户模型和扩展用户模型的UserProfile模型:

class UserProfile(models.Model):
    user = models.OneToOneField(User, related_name='UserProfile')
    universidad = models.ForeignKey(Universidad, related_name ='universidad')
    group_admin = models.ManyToManyField(Group, related_name = 'group_admin')

我试图获取一个允许使用以下格式的GET,PUT和POST数据的用户字段:

'username' = 'foo'
'password' = 'password'
'email' = 'a@b.com'
'universidad' = 'Harvard'
'group_admin' = [1] #list of groups id

我使用过嵌套序列化程序,但它只读。

我也证明了这个解决方案,但我得到了一个KeyError:' universidad'。

class UserSerializer(serializers.HyperlinkedModelSerializer):
    class Meta:
        model = User
        fields = ('url', 'username', 'password', 'email','universidad', 'group_admin')
        write_only_fields = ('password',)

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:0)

发生KeyError是因为您尝试在序列化程序中使用UserProfile的反向关系。 HyperLinkedModelSerializers中不会自动包含反向关系。有关详细信息,请参阅docs并尝试:

fields =('url','username','password','email','UserProfile__universidad','group_admin')