【问题标题】:Django Rest Framework - Serialize multiple modelsDjango Rest Framework - 序列化多个模型
【发布时间】:2014-09-24 15:15:12
【问题描述】:

我有两个模型,默认用户模型和扩展用户模型的 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')

我正在尝试获取一个允许以这种格式获取、放置和发布数据的用户字段:

'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',)

任何帮助将不胜感激。

【问题讨论】:

    标签: django django-rest-framework


    【解决方案1】:

    出现KeyError 是因为您试图在序列化程序中使用UserProfile 的反向关系。反向关系不会自动包含在 HyperLinkedModelSerializer 中。请参阅docs 了解更多信息并尝试:

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

    【讨论】:

    • 嗨@crhodes。感谢您的回答,但我担心错误仍然存​​在。现在我得到一个 UserProfile__universidad KeyError :S
    • 考虑到您希望所有字段都使用UserProfile
    猜你喜欢
    • 2013-11-27
    • 2014-11-12
    • 1970-01-01
    • 2019-02-06
    • 2013-11-11
    • 2016-11-14
    • 1970-01-01
    • 2020-11-18
    • 1970-01-01
    相关资源
    最近更新 更多