2016-03-15 23 views
2

我是SO和Django DRF的新手。 每當我嘗試運行代碼。我得到錯誤「TypeError ReturnDict對象不可調用」。ReturnDict對象不可調用Django Rest框架

models.py

from __future__ import unicode_literals 

from django.db import models 

# Create your models here. 

class Fish(models.Model): 
    name=models.CharField(max_length=120) 
    created=models.DateTimeField(auto_now_add=True) 
    active = models.BooleanField() 

serializers.py

​​

views.py

from django.shortcuts import render 
from rest_framework import viewsets 
from rest_framework import permissions 
from fishes.serializers import FishSerializers 
from fishes.models import Fish 
# Create your views here. 

class FishViewSets(viewsets.ModelViewSet): 
    queryset = Fish.objects.get(id=2) 
    serializer_class = FishSerializers(queryset,context={'value':'brother'}).data 

urls.py

from django.conf.urls import url,include 
from django.contrib import admin 
from rest_framework import routers 
from fishes import views 

router= routers.DefaultRouter() 
router.register(r'api/fishes',views.FishViewSets,base_name='FishViewSets') 
urlpatterns = [ 
    url(r'^admin/', admin.site.urls), 
    url(r'^',include(router.urls)), 
    url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework')) 
] 

error_trace

Traceback (most recent call last): 
    File "/usr/local/lib/python2.7/dist-packages/django/core/handlers/base.py", line 149, in get_response 
    response = self.process_exception_by_middleware(e, request) 
    File "/usr/local/lib/python2.7/dist-packages/django/core/handlers/base.py", line 147, in get_response 
    response = wrapped_callback(request, *callback_args, **callback_kwargs) 
    File "/usr/local/lib/python2.7/dist-packages/django/views/decorators/csrf.py", line 58, in wrapped_view 
    return view_func(*args, **kwargs) 
    File "/usr/local/lib/python2.7/dist-packages/rest_framework/viewsets.py", line 87, in view 
    return self.dispatch(request, *args, **kwargs) 
    File "/usr/local/lib/python2.7/dist-packages/rest_framework/views.py", line 466, in dispatch 
    response = self.handle_exception(exc) 
    File "/usr/local/lib/python2.7/dist-packages/rest_framework/views.py", line 463, in dispatch 
    response = handler(request, *args, **kwargs) 
    File "/usr/local/lib/python2.7/dist-packages/rest_framework/mixins.py", line 47, in list 
    serializer = self.get_serializer(queryset, many=True) 
    File "/usr/local/lib/python2.7/dist-packages/rest_framework/generics.py", line 111, in get_serializer 
    return serializer_class(*args, **kwargs) 
TypeError: 'ReturnDict' object is not callable 

請幫助理解和Django的REST框架解決這個錯誤!

+0

難道我的回答可以幫助您?如果願意,請接受。 – ilse2005

回答

1

您的FishViewSets至少有兩個問題。

  1. queryset應該是queryset(你設置一個實例)

  2. serializer_class必須是一個類。您將其設置爲序列化器的序列化實例。

這應有助於:

class FishViewSets(viewsets.ModelViewSet): 
    queryset = Fish.objects.all() 
    serializer_class = FishSerializers