2014-09-24 77 views
0

我有两个型号,默认的用户模型和扩展了用户模型中的用户配置模式:Django的REST框架 - 序列化多个模型

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' = '[email protected]' 
'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',) 

任何帮助,将不胜感激。

回答

0

KeyError发生是因为您试图在序列化程序中使用UserProfile的反向关系。反向关系不会自动包含在HyperLinkedModelSerializers中。见docs获取更多信息,并尝试:

栏=( 'URL', '用户名', '密码', '电子邮件', 'UserProfile__universidad', 'group_admin')

+0

@crhodes嗨。谢谢你的回答,但我担心错误仍然存​​在。现在我获得UserProfile__universidad KeyError:S – Audoen 2014-09-25 15:06:53

+0

考虑到您希望所有字段都使用'UserProfile' – crhodes 2014-09-25 16:56:08

相关问题