5

Вот моя модель:Джанго остальное serializer.data является пустой OrderedDict()

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) 

При просмотре этой страницы в веб-браузере 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()] 

Есть ли что-то не так с моим сериализатором или это еще один вопрос, все вместе?

ответ

19

Вы должны использовать serializers.ModelSerializer а не serializers.Serializer, если вы работаете с моделями и querysets.

Если вы используете serializers.Serializer, вам необходимо определить поле в нем вручную. Как это:

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

и т.д. Вы не можете ссылаться на них в мета как с ModelSerializer. Документы на ModelSerializer можно найти: here

+0

Спасибо, добавил его со ссылкой на документы serializer. – Aldarund

+0

Это происходит со мной, когда я использую 'serializers.Serializer'. У вас есть какая-то подсказка? –

Смежные вопросы