Skip to content

Commit 515709d

Browse files
committed
Fixed queries without serializers again.
It was working only with `.first()`. Support `.values()`. Support empty results.
1 parent c106731 commit 515709d

File tree

3 files changed

+25
-4
lines changed

3 files changed

+25
-4
lines changed

django_qserializer/serialization.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -106,8 +106,13 @@ def to_serialize(self, serializer=None):
106106

107107
def _fetch_all(self):
108108
super()._fetch_all()
109-
if self._serializer:
110-
self._serializer._prepare_objects(self._result_cache)
109+
if not self._result_cache:
110+
return
111+
112+
serializer = self.serializer
113+
114+
if serializer and isinstance(self._result_cache[0], models.Model):
115+
serializer._prepare_objects(self._result_cache)
111116

112117
def _clone(self):
113118
c = super()._clone()

django_qserializer/tests/test_serializer.py

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,7 @@ class S(BaseSerializer):
148148

149149
def prepare_objects(self, objs):
150150
for obj in objs:
151-
assert obj._prefetched_objects_cache
151+
assert obj._prefetched_objects_cache['travels']
152152

153153
def serialize_object(self, obj):
154154
return {
@@ -164,3 +164,19 @@ def test_query_without_serializer(bus_fixture):
164164
Regression test. Query without serializer failed.
165165
"""
166166
Bus.objects.first()
167+
list(Bus.objects.all())
168+
169+
170+
def test_values(bus_fixture):
171+
"""
172+
Regression test.
173+
"""
174+
qs = Bus.objects \
175+
.to_serialize(BaseSerializer) \
176+
.values('plate')
177+
plate = list(qs)[0]
178+
assert {'plate': 'BUSER'} == plate
179+
180+
181+
def test_empty_result(db):
182+
Bus.objects.to_serialize(BaseSerializer).first()

setup.cfg

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[metadata]
22
name = django_qserializer
3-
version = 0.2.6
3+
version = 0.2.7
44
url = https://github.com/buserbrasil/django-qserializer
55
license = MIT
66
author = Iuri de Silvio

0 commit comments

Comments
 (0)