diff --git a/src/pretix/base/services/checkin.py b/src/pretix/base/services/checkin.py index 0fffaf9d2c..3ac7b6792b 100644 --- a/src/pretix/base/services/checkin.py +++ b/src/pretix/base/services/checkin.py @@ -1045,7 +1045,7 @@ def perform_checkin(op: OrderPosition, clist: CheckinList, given_answers: dict, with transaction.atomic(): # Lock order positions, if it is an entry. We don't need it for exits, as a race condition wouldn't be problematic - opqs = OrderPosition.all + opqs = OrderPosition.all.select_related("order", "item") if type != Checkin.TYPE_EXIT: opqs = opqs.select_for_update(of=OF_SELF) op = opqs.get(pk=op.pk) diff --git a/src/tests/base/test_checkin.py b/src/tests/base/test_checkin.py index 04f51d4a65..2fb7559b04 100644 --- a/src/tests/base/test_checkin.py +++ b/src/tests/base/test_checkin.py @@ -1186,7 +1186,7 @@ def test_rules_reasoning_prefer_number_over_date(event, position, clist): @pytest.mark.django_db(transaction=True) def test_position_queries(django_assert_max_num_queries, position, clist): - with django_assert_max_num_queries(13) as captured: + with django_assert_max_num_queries(12) as captured: perform_checkin(position, clist, {}) if 'sqlite' not in settings.DATABASES['default']['ENGINE']: assert any('FOR UPDATE' in s['sql'] for s in captured)