我有两个模型,默认用户模型和扩展用户模型的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',)
任何帮助都将不胜感激。
答案 0 :(得分:0)
发生KeyError
是因为您尝试在序列化程序中使用UserProfile
的反向关系。 HyperLinkedModelSerializers中不会自动包含反向关系。有关详细信息,请参阅docs并尝试:
fields =('url','username','password','email','UserProfile__universidad','group_admin')