【问题标题】:response returning no data django-rest响应没有返回数据 django-rest
【发布时间】:2021-10-02 09:58:55
【问题描述】:

我不知道这段代码有什么问题,之前我遇到了断言错误,现在是这个

class OrganisationSerializer(ModelSerializer):
    products = ProductSerializer(many=True)   #manytomany field
    pictures = PicturesSerializer(source ='pictures_set',many=True)  #foreign key field
    class Meta:
        model = Organisation
        fields = ['name','address' ,'products','pictures']



@api_view(['GET'])
def get_data(request):
    data = None
    query_set = Organisation.objects.all()
    serialized_data = OrganisationSerializer(data = query_set,many =True)
    if serialized_data.is_valid():
        data = serialized_data.data
        print(data)
    return Response(data,status=status.HTTP_200_OK)

问题

returning no data 

【问题讨论】:

  • 这意味着您的OrganisationSerializer 无效,但应该始终如此,因为您没有将其与请求数据绑定。

标签: django django-rest-framework django-serializer


【解决方案1】:

这意味着您的OrganisationSerializer 无效,但应该始终如此,因为您没有将其与请求数据绑定:

@api_view(['GET'])
def get_data(request):
    queryset = Organisation.objects.all()
    serializer = OrganisationSerializer(queryset, many=True)
    return Response(serializer.data, status=status.HTTP_200_OK)

因此,我们使用OrganisationSerializer 将模型对象转换为数据,而不是从请求中的数据构造Organisation 对象。

【讨论】:

  • 我仍然不明白,我认为它们用于将对象实例转换为原生类型 @Willem Van
  • @AtifShafi:是的,但也有相反的方向:将原始类型转换为 Organisation 对象(因此反序列化)。如果您在序列化模式下使用它,则序列化程序无法验证,因为验证仅用于处理原始类型以建模对象。
猜你喜欢
  • 1970-01-01
  • 2013-04-09
  • 2018-03-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-30
  • 1970-01-01
  • 2019-10-29
相关资源
最近更新 更多