Skip to content
13 changes: 10 additions & 3 deletions syncano/models/manager.py
Original file line number Diff line number Diff line change
Expand Up @@ -972,9 +972,16 @@ def _build_query(self, query_data, **kwargs):
if self.LOOKUP_SEPARATOR in field_name:
model_name, field_name, lookup = self._get_lookup_attributes(field_name)

for field in model._meta.fields:
if field.name == field_name:
break
# if filter is made on relation field: relation__name__eq='test';
if model_name:
for field in model._meta.fields:
if field.name == model_name:
break
# if filter is made on normal field: name__eq='test';
else:
for field in model._meta.fields:
if field.name == field_name:
break

self._validate_lookup(model, model_name, field_name, lookup, field)

Expand Down
11 changes: 9 additions & 2 deletions tests/integration_test_relations.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,11 @@
from tests.integration_test import InstanceMixin, IntegrationTest


class ResponseTemplateApiTest(InstanceMixin, IntegrationTest):
class RelationApiTest(InstanceMixin, IntegrationTest):

@classmethod
def setUpClass(cls):
super(ResponseTemplateApiTest, cls).setUpClass()
super(RelationApiTest, cls).setUpClass()

# prapare data
cls.author = Class.please.create(name="author", schema=[
Expand Down Expand Up @@ -90,3 +90,10 @@ def test_related_field_lookup_is(self):
self.assertEqual(len(list(filtered_books)), 1)
for book in filtered_books:
self.assertEqual(book.title, self.niezwyciezony.title)

def test_multiple_lookups(self):
filtered_books = self.book.objects.list().filter(authors__id__in=[self.prus.id], title__eq='Lalka')

self.assertEqual(len(list(filtered_books)), 1)
for book in filtered_books:
self.assertEqual(book.title, self.lalka.title)