我有这个序列化器
users = serializers.PrimaryKeyRelatedField(many=True, required=False)
现在,这需要用户列出[1,2,3]
现在我发送用户作为[user1, user2]
等用户对象的完整列表。
我可以使用JS在前端创建id列表。但我想在serilaizer中使用一些功能,我可以将其作为完整对象发布,但系统会将其列为ID。
我使用了Complete UsersSerializer
而不是PrimaryKey,但是它会尝试用它来编写用户对象,或者根本不写。我只想写多对多的关系
答案 0 :(得分:0)
使用UsersSerializer
users = UsersSerializer(many=True, required=False)
并覆盖序列化程序中的validate
方法。从用户ID列表中检索所有用户实例,并将其重新分配给data['users']
。因此,当selerializer调用create / update方法时,在经过验证的数据dict中,您将拥有用户实例而不是用户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