2014-09-24 75 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

相關問題