Ric*_*ard 8 python django http multipartform-data django-rest-framework
我正在尝试使用 multipart/form-data 发送列表/数组。
定义ModelSerializer该字段使用
class RequestSerializer(serializers.ModelSerializer):
# ...
in_categories = serializers.PrimaryKeyRelatedField(many=True, read_only=True)
Run Code Online (Sandbox Code Playgroud)
该Model字段定义为
class Request(models.Model):
# ....
in_categories = models.ManyToManyField(to='Category',
through='RequestToCategory',
blank=False)
Run Code Online (Sandbox Code Playgroud)
现在,我的定义ModelViewSet
如下:
class RequestViewSet(viewsets.ModelViewSet):
# ...
def create(self, request, *args, **kwargs):
print(request.data)
serializer = self.get_serializer(data=request.data)
print(serializer.is_valid(raise_exception=True))
print(serializer.validated_data)
Run Code Online (Sandbox Code Playgroud)
但是,该in_categories字段永远不会填充实际数据,验证器raise在调用时也不会出现异常。
我没有找到任何方法以字段实际获取定义的键列表的方式传输数据。我尝试了三件事:
request.data = <QueryDict: { ... 'in_categories': ['[2, 3]'] ...request.data = <QueryDict: { ... 'in_categories[0]': ['2'], in_categories[1]': ['3'] ...request.data = <QueryDict: { ... 'in_categories[0]id': ['2'], in_categories[1]id': ['3'] ...每个解决方案 (i) 均达到ViewSet,(ii) 正确验证,但 (iii) 未反映到 serializer.validated_data。
我错过了什么吗?我已经花了几个小时在这上面,没有找到如何让 DRF 理解我想要的解决方案。
Aja*_*sia -2
为我
Request = json.loads(json.dumps(request.data))
Run Code Online (Sandbox Code Playgroud)
已解决问题
| 归档时间: |
|
| 查看次数: |
2432 次 |
| 最近记录: |