Skip to content

Commit ff0175d

Browse files
James LinJames Lin
authored andcommitted
bug fix get by id
1 parent 6c67b01 commit ff0175d

File tree

5 files changed

+19
-4
lines changed

5 files changed

+19
-4
lines changed

api/views.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
from rest_framework import generics
22
from rest_framework import serializers
3+
from rest_framework import viewsets
34
from .models import DataModel
45
from .filters import DataModelFilter
56

@@ -10,7 +11,7 @@ class Meta(object):
1011
fields = '__all__'
1112

1213

13-
class ListView(generics.ListAPIView):
14+
class ListView(viewsets.ModelViewSet):
1415
serializer_class = DataModelSerializer
1516
queryset = DataModel.objects.all()
1617
filter_class = DataModelFilter

django_rest_framework_queryset/settings.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@
4141
'rest_framework',
4242
'api',
4343
'web',
44+
'django_filters',
4445
]
4546

4647
MIDDLEWARE_CLASSES = [

django_rest_framework_queryset/urls.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,16 @@
1616
"""
1717
from django.conf.urls import url
1818
from django.contrib import admin
19+
from rest_framework import routers
1920
from api.views import ListView
2021
from web.views import ListDataView
2122

23+
router = routers.SimpleRouter()
24+
router.register(r'api', ListView)
25+
2226
urlpatterns = [
2327
url(r'^admin/', admin.site.urls),
24-
url(r'^api/', ListView.as_view()),
28+
# url(r'^api/', ListView.as_view()),
2529
url(r'^list/$', ListDataView.as_view()),
2630
url(r'^list/page/(?P<page>\d+)/$', ListDataView.as_view()),
27-
]
31+
] + router.urls

rest_framework_queryset/queryset.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ def _clone(self):
7676

7777
def _call_api(self):
7878
if self.__id:
79-
self.url = '{}/{}'.format(self.url.rstrip('/'), self.__id)
79+
self.url = '{}/{}/'.format(self.url.rstrip('/'), self.__id)
8080
return super(RestFrameworkQuerySet, self)._call_api()
8181

8282
def count(self):
@@ -90,6 +90,7 @@ def count(self):
9090

9191
def get_result(self):
9292
response = self._call_api()
93+
print(response.text)
9394
result = response.json()
9495
if 'results' in result:
9596
return result['results']

tests.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,3 +100,11 @@ def test_slice(self):
100100
qs = RestFrameworkQuerySet('{}/api/'.format(self.live_server_url))
101101
item_list = [item['value'] for item in qs[200:1000]]
102102
self.assertEqual(item_list, list(range(200, 1000)))
103+
104+
def test_get(self):
105+
DataModel.objects.bulk_create([DataModel(value=i) for i in range(100)])
106+
qs = RestFrameworkQuerySet('{}/api/'.format(self.live_server_url))
107+
item = qs.get(1)
108+
self.assertEqual(item['id'], 1)
109+
item = qs.get(2)
110+
self.assertEqual(item['id'], 2)

0 commit comments

Comments
 (0)