当我在SerializerMethodField
方法中的HERE
处有断点时,我的return
方法仅打印get
,然后在其后打开serializer
变量已在调用serializer.data
时触发OR(在这种情况下,它将打印预期的数据,但validated_data
仍然为空)。
查看:
class EventAddPeople(generics.GenericAPIView):
serializer_class = EventAddPeopleSerializer_Read
def get(self, request, *args, **kwargs):
serializer = EventAddPeopleSerializer_Read(data=request.GET)
serializer.is_valid(raise_exception=True)
print(serializer.validated_data)
return HttpResponse(serializer.validated_data)
序列化器:
class EventAddPeopleSerializer_Read(serializers.Serializer):
event_id = serializers.SerializerMethodField(method_name='get_event_id')
person_ids = serializers.SerializerMethodField()
def get_event_id(self, obj):
print("HERE")
return "TEST00"
def get_person_ids(self, obj):
print("HERE")
return "TEST00"
class Meta:
fields = ('event_id', 'person_ids')
答案 0 :(得分:0)
答案 1 :(得分:0)
第一件事, V1 V2 V3 V4 V5
1 c0 1 1 1 1
2 c1 1 1 1 NA
3 c2 1 1 NA NA
4 c3 8 8 8 8
5 c4 1 1 1 10
适用于 非GET请求 。您不应使用HTTP GET在有效负载部分中发送数据。如果要使用GET方法发送数据,请通过 URL查询参数
传递数据
因此,该网址将变为request.data
并且您需要将此查询参数作为传递给序列化程序
/api/my/end-point/?event_id=1&person_ids=3
第二件事,您错过了在序列化器中添加 serializer = EventAddPeopleSerializer_Read(data=request.GET)
Meta class