diff --git a/src/pretix/api/views/order.py b/src/pretix/api/views/order.py index 63c7f45f35..57baa5abb2 100644 --- a/src/pretix/api/views/order.py +++ b/src/pretix/api/views/order.py @@ -105,9 +105,9 @@ with scopes_disabled(): subevent_after = django_filters.IsoDateTimeFilter(method='subevent_after_qs') subevent_before = django_filters.IsoDateTimeFilter(method='subevent_before_qs') search = django_filters.CharFilter(method='search_qs') - item = django_filters.CharFilter(field_name='all_positions', lookup_expr='item_id') - variation = django_filters.CharFilter(field_name='all_positions', lookup_expr='variation_id') - subevent = django_filters.CharFilter(field_name='all_positions', lookup_expr='subevent_id') + item = django_filters.CharFilter(field_name='all_positions', lookup_expr='item_id', distinct=True) + variation = django_filters.CharFilter(field_name='all_positions', lookup_expr='variation_id', distinct=True) + subevent = django_filters.CharFilter(field_name='all_positions', lookup_expr='subevent_id', distinct=True) class Meta: model = Order diff --git a/src/tests/api/test_orders.py b/src/tests/api/test_orders.py index fea6afbaad..f73749db55 100644 --- a/src/tests/api/test_orders.py +++ b/src/tests/api/test_orders.py @@ -324,6 +324,21 @@ def test_order_list_filter_subevent_date(token_client, organizer, event, order, assert resp.status_code == 200 assert [res] == resp.data['results'] + # Test distinct-ness of results + with scopes_disabled(): + OrderPosition.objects.create( + order=order, + item=item, + variation=None, + price=Decimal("23"), + canceled=False, + positionid=3, + subevent=subevent, + ) + resp = token_client.get( + '/api/v1/organizers/{}/events/{}/orders/?subevent={}'.format(organizer.slug, event.slug, subevent.pk)) + assert len(resp.data['results']) == 1 + @pytest.mark.django_db def test_order_list(token_client, organizer, event, order, item, taxrule, question):