Skip to content

Commit a9f33fe

Browse files
committed
don't use id as index unless present (fixes #13)
1 parent 112c17b commit a9f33fe

File tree

5 files changed

+24
-3
lines changed

5 files changed

+24
-3
lines changed

rest_pandas/serializers.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,8 @@ def get_index_fields(self):
7070
"""
7171
default_fields = []
7272
if getattr(self.model_serializer_meta, 'model', None):
73-
default_fields = ['id']
73+
if 'id' in self.child.get_fields():
74+
default_fields = ['id']
7475
return self.get_meta_option('index', default_fields)
7576

7677
def get_meta_option(self, name, default=None):

tests/test_views.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,12 @@ def test_view_csv(self):
2424
self.assertEqual(len(data), 5)
2525
self.assertEqual(data[0].value, '0.5')
2626

27+
def test_view_csv_noid(self):
28+
response = self.client.get("/timeseriesnoid.csv")
29+
data = self.load_string(response)
30+
self.assertEqual(len(data), 5)
31+
self.assertEqual(data[0].value, '0.5')
32+
2733
def test_view_json(self):
2834
response = self.client.get("/timeseries.json")
2935
self.assertEqual(response.accepted_media_type, "application/json")

tests/testapp/serializers.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,12 @@ class Meta:
1212
fields = '__all__'
1313

1414

15+
class TimeSeriesNoIdSerializer(TimeSeriesSerializer):
16+
class Meta:
17+
model = TimeSeries
18+
exclude = ['id']
19+
20+
1521
class MultiTimeSeriesSerializer(ModelSerializer):
1622
class Meta:
1723
model = MultiTimeSeries

tests/testapp/urls.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,8 @@
33
from rest_framework.urlpatterns import format_suffix_patterns
44

55
from .views import (
6-
NoModelView, FromFileView, TimeSeriesView, TimeSeriesViewSet,
6+
NoModelView, FromFileView, TimeSeriesView, TimeSeriesNoIdView,
7+
TimeSeriesViewSet,
78
MultiTimeSeriesView, MultiScatterView, MultiBoxplotView,
89
ComplexTimeSeriesView, ComplexScatterView, ComplexBoxplotView,
910
)
@@ -15,6 +16,7 @@
1516
url(r'^nomodel$', NoModelView.as_view()),
1617
url(r'^fromfile$', FromFileView.as_view()),
1718
url(r'^timeseries$', TimeSeriesView.as_view()),
19+
url(r'^timeseriesnoid$', TimeSeriesNoIdView.as_view()),
1820
url(r'^multitimeseries$', MultiTimeSeriesView.as_view()),
1921
url(r'^multiscatter$', MultiScatterView.as_view()),
2022
url(r'^multiboxplot$', MultiBoxplotView.as_view()),

tests/testapp/views.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,8 @@
44
)
55
from .models import TimeSeries, MultiTimeSeries, ComplexTimeSeries
66
from .serializers import (
7-
TimeSeriesSerializer, MultiTimeSeriesSerializer,
7+
TimeSeriesSerializer, TimeSeriesNoIdSerializer,
8+
MultiTimeSeriesSerializer,
89
ComplexTimeSeriesSerializer, ComplexScatterSerializer,
910
ComplexBoxplotSerializer,
1011
)
@@ -37,6 +38,11 @@ def get_template_context(self, data):
3738
return {'name': data['name'] + ' Custom'}
3839

3940

41+
class TimeSeriesNoIdView(PandasView):
42+
queryset = TimeSeries.objects.all()
43+
serializer_class = TimeSeriesNoIdSerializer
44+
45+
4046
class TimeSeriesViewSet(PandasViewSet):
4147
queryset = TimeSeries.objects.all()
4248
serializer_class = TimeSeriesSerializer

0 commit comments

Comments
 (0)