为什么Django REST Framework返回空列表?

时间:2016-03-17 06:13:57

标签: python django postgresql rest django-rest-framework

在生产方面,我们实现了简单的Django REST,它返回数据库中的所有对象:

urls.py:

router = routers.DefaultRouter(trailing_slash=False)
router.register(r'clubs', views.ClubViewSet)

urlpatterns = patterns(
    '',
    url(r'^', include(router.urls)),
    url(r'^filters/', views.ClubFilterView.as_view())
)

views.py:

from .serializers import ClubSerializer, ClubFilterSerializer
from .models import (Club, ImageForClub, ClubStaff, ClubFilter,
                     Metro, Rajon, Okrug, Street, Rajon, Rubric, Equipment)
class ClubViewSet(generics.ListAPIView, viewsets.GenericViewSet):
    queryset = Club.objects.filter(latitude__isnull=False)
    throttle_classes = (throttling.ScopedRateThrottle,)
    filter_backends = (filters.SearchFilter,)
    search_fields = ('title',)
    serializer_class = ClubSerializer
    pagination_class = None
    paginate_by = None

在制作中,它运作得很好。但当我尝试将其部署在我当地的MacBook Air上时,它开始表现得很奇怪:

在python manage.py shell中我可以从数据库接收对象:

In [5]: from apps.clubs.models import Club

In [6]: x = Club.objects.get(pk=1)

In [7]: x
Out[7]: <Club: Pattana Sport>

但是当我尝试按照图片的方式向Django REST发送请求时,我收到的只是一个空列表:

enter image description here

尽管生产中的相同规则返回了数据库中所有对象的列表。我使用相同的数据库 - postgres,我使用此命令将数据库从生产转储并恢复到本地计算机:

$ sudo su - postgres 
$ psql [database_name] << file_dump.sql

之后我授权用户使用Django以此数据库的所有权限登录。

我做错了什么?以及如何调试这种奇怪的行为?我已经检查了一切......

1 个答案:

答案 0 :(得分:0)

嗯,您正按latitude__isnull=False过滤项目,我认为数据库中的项目不是假的