Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

FacetedFilterSearchFilterBackend not working when filtering using "__in" operator #308

Open
gmuj opened this issue Jun 12, 2023 · 1 comment

Comments

@gmuj
Copy link

gmuj commented Jun 12, 2023

Describe the bug

When using filter with in operator and facet param eg:
?facet=state&state__in=published__not_published

I get the following error:

    def aggregate(self, request, queryset, view):
>       facets = queryset._facets
E       AttributeError: 'Search' object has no attribute '_facets'

Environment

Python environment:

  1. pip list
Package                            Version  Editable project location
---------------------------------- -------- ------------------------------------------------------
asgiref                            3.4.1
attrs                              21.2.0
backports.entry-points-selectable  1.1.0
certifi                            2023.5.7
coverage                           5.5
distlib                            0.3.2
Django                             3.2.5
django-cors-headers                3.7.0
django-debug-toolbar               3.2.1
django-debug-toolbar-force         0.1.8
django-elasticsearch-debug-toolbar 2.0.0
django-elasticsearch-dsl           7.3
django-elasticsearch-dsl-drf       0.22.5   /home/gmuj/Playground/django-elasticsearch-dsl-drf/src
django-nine                        0.2.4
django-ormex                       0.2.1
djangorestframework                3.12.4
elasticsearch                      7.17.9
elasticsearch-dsl                  7.4.1
factory-boy                        2.11.1
Faker                              8.1.4
filelock                           3.0.12
iniconfig                          1.1.1
mock                               4.0.3
packaging                          21.0
pip                                22.3.1
platformdirs                       2.0.2
pluggy                             0.13.1
py                                 1.10.0
pyparsing                          2.4.7
pytest                             6.2.4
pytest-cov                         2.12.0
pytest-django                      4.3.0
pytest-ordering                    0.6
pytest-pythonpath                  0.7.3
python-dateutil                    2.8.2
pytz                               2021.1
selenium                           3.141.0
setuptools                         58.1.0
six                                1.16.0
sqlparse                           0.4.1
text-unidecode                     1.3
toml                               0.10.2
tox                                3.23.1
urllib3                            1.26.6
virtualenv                         20.6.0
  1. python --version
    Python 3.9.9

Which version of Elasticsearch are you using?

To Reproduce
Steps to reproduce the behavior:

Add the following test to django_elasticsearch_dsl_drf/tests/test_faceted_filtered_search.py

    def test_list_results_facet_and_filter_using_in_operator(self):
        self.authenticate()
        url = reverse('bookdocument_faceted_filtered-list')

        response = self.client.get(url + '?facet=state&state__in={}__{}'.format(
            constants.BOOK_PUBLISHING_STATUS_PUBLISHED,
            constants.BOOK_PUBLISHING_STATUS_NOT_PUBLISHED
        ))
        self.assertEqual(response.status_code, status.HTTP_200_OK)

        # Should contain all published books
        self.assertEqual(len(response.data['results']), self.published_count)

        # Should contain 1 facet
        self.assertEqual(len(response.data['facets']), 1)
        self.assertEqual(response.data['facets']['_filter_state']['state']['buckets'], [{
            "doc_count": self.published_count,
            "key": "published"
        }, {
            "doc_count": self.not_published_count,
            "key": "not_published"
        }])

Expected behavior
No error should happen.

Screenshots
If applicable, add screenshots to help explain your problem.

Additional context
Add any other context about the problem here.

@pixeldot84
Copy link

@gmuj Hi, did you solve this problem?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants