如何在Django REST Framework中使用序列化程序

时间:2018-01-31 21:43:56

标签: json django serialization django-rest-framework

我是Django REST框架的新手。这是一个非常noob的问题,但我无法理解序列化器是如何工作的?我们如何将数据发送到序列化器以及如何从中获取数据 我正在尝试将我的查询集序列化为字典列表 这是我的 views.py

def get(self,request):
    z= int(request.GET.get('q',''))
    queryset=[]
    queryset.append(models.Cart.objects.filter(UserId=z).values('id'))
    k=[]
    for values in queryset:
        k.append(models.ProductsDiscription.objects.filter(id=values).values())
    abc = serializers.NewSerializer(k,many=True)
    return JsonResponse({'pcartlist':((abc))})

如果我不使用序列化程序,我会收到错误:

k:queryset is not json serializable.

所以我尝试创建一个序列化程序,但是我仍然遇到同样的错误。我不知道如何使用序列化器。

serializers.py

class NewSerializer(serializers.Serializer):
    product_id= serializers.IntegerField()

k是词典列表,我也不知道要使用哪个字段。

我尝试过从各个可能的地方阅读和理解,但我无法理解序列化程序的工作原理。如果可能的话,请通过一个非常简单的例子来帮助我。这将非常有帮助。

1 个答案:

答案 0 :(得分:-1)

请将查询集直接传递给序列化程序。如果要序列化模型,可以使用modelSerializer。模型序列化程序还需要模型名称作为META属性。可以找到文档here

序列化查询集:

qs = YourModel.objects.all()
serializer = YourSerializer(qs, many=True)

序列化后的结果可以从serializer.data获得。您可以print (serializer.data)查看结果。