5

benim modeldirDjango kalan serializer.data boş OrderedDict olan() İşte

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) 

: Burada

from rest_framework import serializers 
from staff.models import Staff 


class StaffSerializer(serializers.Serializer): 
    class Meta: 
     model = Staff 
     fields = ("id", "employer", "user") 

benim görünümdür Bu sayfayı web göz atılabilir API'sinde görüntülerken şunu gördüm:

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

benim serileştiriciye sorun var mı yoksa bu arada başka bir konudur:

ve baskı serializer.data ve sorgu kümesi sonucu

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

[ 
    {} 
] 
bu nedir? Eğer modelleri ve Sorgu kümelerini ile çalışıyorsanız

cevap

19

Sen serializers.ModelSerializer değil serializers.Serializer kullanmak gerekir.

Eğer serializers.Serializer kullanıyorsanız, alanı elle tanımlamanız gerekir. Şunun gibi:

class StaffSerializer(serializers.Serializer): 
    id = serializers.IntegerField() 
    content = serializers.CharField(max_length=200) 

vb ModelSerializer olduğu gibi meta bunları referans olamaz . ModelSerializer üzerindeki belgeler için here

+0

Teşekkürler, serializer dokümanlar için bir bağlantı ekledik. – Aldarund

+0

Bu "serializers.Serializer" kullandığımda bana oluyor. Herhangi bir fikrin var mı? –