Django rest serializer.data是空的OrderedDict()

Django rest serializer.data是空的OrderedDict(),django,python-2.7,serialization,django-models,django-rest-framework,Django,Python 2.7,Serialization,Django Models,Django Rest Framework,这是我的模型: from django.db import models from django.contrib.auth.models import User from datetime import datetime class Staff(models.Model): employer = models.ForeignKey("shops.Shop") user = models.ForeignKey(User) def __unicode__(self):

这是我的模型:

from django.db import models
from django.contrib.auth.models import User
from datetime import datetime


class Staff(models.Model):
    employer = models.ForeignKey("shops.Shop")
    user = models.ForeignKey(User)

    def __unicode__(self):
        return self.user.username
这是我的序列化程序:

from rest_framework import serializers
from staff.models import Staff 


class StaffSerializer(serializers.Serializer):
    class Meta:
        model = Staff
        fields = ("id", "employer", "user")
以下是我的看法:

from staff.models import Staff
from staff.serializers import StaffSerializer
from rest_framework import  generics
from rest_framework.response import Response



class StaffList(generics.ListCreateAPIView):
    queryset = Staff.objects.all()
    serializer_class = StaffSerializer

    def list(self, request):
        queryset = self.get_queryset()
        serializer = StaffSerializer(queryset, many=True)
        print queryset
        print serializer
        print serializer.data
        return Response(serializer.data)
在web browsable API上查看此页面时,我看到的是:

HTTP 200 OK
Content-Type: application/json
Vary: Accept
Allow: GET, POST, HEAD, OPTIONS

[
    {}
]
打印serializer.data和queryset的结果如下:

{<Staff: Alex>}
StaffSerializer([<Staff: Alex>], many=True):
[OrderedDict()]
{}
StaffSerializer([],many=True):
[OrderedDict()]

我的序列化程序有问题吗?或者这是另一个问题吗?

您需要使用序列化程序。ModelSerializer不是序列化程序。如果您使用的是模型和查询集,则serializer

如果您使用的是Serializer.Serializer,则需要在其中手动定义字段。像这样:

class StaffSerializer(serializers.Serializer):
  id = serializers.IntegerField()
  content = serializers.CharField(max_length=200)
等等。
您不能像ModelSerializer那样在meta中引用它们。可以找到ModelSerializer上的文档

当我使用
序列化程序时,这种情况会发生。序列化程序
。你有什么线索吗?现在已经很晚了,但在我的实例中重写serializers.ModelSerializer.\uuu init\uuuuuuuuuu时,我遇到了同样的问题。即使init只做了一个super()备份链。