【问题标题】:How can i deserialize before saving in REST Framework在保存到 REST 框架之前如何反序列化
【发布时间】:2015-02-03 00:39:21
【问题描述】:

我有这个序列化器

users = serializers.PrimaryKeyRelatedField(many=True, required=False)

现在这期望用户列表[1,2,3]

现在我将用户作为用户对象的完整列表发送,例如 [user1, user2]

我可以用 JS 在前端制作那个 id 列表。但我想要 serilaizer 中的一些功能,我可以将其作为完整的对象发布,但系统会使其成为 id 列表。

我使用 Complete UsersSerializer 而不是 PrimaryKey,但它要么尝试用它写用户对象,要么根本不写。我只想写多对多的关系

【问题讨论】:

    标签: python django serialization django-rest-framework


    【解决方案1】:

    使用UsersSerializer

    users = UsersSerializer(many=True, required=False)
    

    并覆盖序列化程序中的validate 方法。从用户 ID 列表中检索所有用户实例并将其重新分配给 data['users']。因此,当您 selerializer 调用 create/update 方法时,在经过验证的数据字典中,您将拥有用户实例而不是用户 ID。

    def validate(self, data):
        request = self.context['request']
        user    = request.user
        print "dataaaaaaaaaaaaaaaaaaaaaaaaaaa",
        users_ids = request.DATA.getlist('users')
        users = User.objects.filter(id__in=users_id)
        data['users'] = users
        return data
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-04-08
      • 1970-01-01
      • 2021-06-22
      • 2013-02-03
      • 1970-01-01
      • 1970-01-01
      • 2021-06-20
      • 1970-01-01
      相关资源
      最近更新 更多