Skip to content

Commit 4987a5d

Browse files
authored
fix(models): Remove relations from indexed model fields (#233)
* Ensure that relational fields are not considered at index init time Signed-off-by: John Griebel <[email protected]> * fix(models): Get all_model_fields on Django >= 1.8 too
1 parent 749d57b commit 4987a5d

File tree

3 files changed

+13
-3
lines changed

3 files changed

+13
-3
lines changed

algoliasearch_django/models.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -81,9 +81,9 @@ def __init__(self, model, client, settings):
8181
self.__translate_fields = {}
8282

8383
try:
84-
all_model_fields = model._meta.get_all_field_names()
85-
except AttributeError: # get_all_field_names is removed in Django >= 1.10
86-
all_model_fields = [f.name for f in model._meta.get_fields()]
84+
all_model_fields = [f.name for f in model._meta.get_fields() if not f.is_relation]
85+
except AttributeError: # get_fields requires Django >= 1.8
86+
all_model_fields = [f.name for f in model._meta.local_fields]
8787

8888
if isinstance(self.fields, str):
8989
self.fields = (self.fields,)

tests/models.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,3 +67,8 @@ def property_should_not_index(self):
6767
@property
6868
def property_string(self):
6969
return "foo"
70+
71+
72+
class BlogPost(models.Model):
73+
author = models.ForeignKey(User)
74+
text = models.TextField(default="")

tests/test_index.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,11 @@ class WebsiteIndex(AlgoliaIndex):
5959
except AttributeError:
6060
self.assertRegexpMatches(index.index_name, regex)
6161

62+
def test_index_model_with_foreign_key_reference(self):
63+
index = AlgoliaIndex(User, self.client, settings.ALGOLIA)
64+
index.reindex_all()
65+
self.assertFalse("blogpost" in index.fields)
66+
6267
def test_index_name_settings(self):
6368
algolia_settings = dict(settings.ALGOLIA)
6469
del algolia_settings['INDEX_PREFIX']

0 commit comments

Comments
 (0)