diff --git a/src/pretix/base/exporters/reusablemedia.py b/src/pretix/base/exporters/reusablemedia.py index 83182c2df7..f5991a55a1 100644 --- a/src/pretix/base/exporters/reusablemedia.py +++ b/src/pretix/base/exporters/reusablemedia.py @@ -40,7 +40,9 @@ class ReusableMediaExporter(OrganizerLevelExportMixin, ListExporter): media = ReusableMedium.objects.filter( organizer=self.organizer, ).select_related( - 'customer', 'linked_orderposition', 'linked_giftcard', + 'customer', 'linked_giftcard', + ).prefetch_related( + Prefetch('linked_orderpositions', queryset=OrderPosition.objects.select_related("order")) ).order_by('created') headers = [ @@ -58,17 +60,28 @@ class ReusableMediaExporter(OrganizerLevelExportMixin, ListExporter): yield self.ProgressSetTotal(total=media.count()) for medium in media.iterator(chunk_size=1000): - row = [ - medium.type, - medium.identifier, - _('Yes') if medium.active else _('No'), - date_format(medium.expires, 'SHORT_DATETIME_FORMAT') if medium.expires else '', - medium.customer.identifier if medium.customer_id else '', - f"{medium.linked_orderposition.order.code}-{medium.linked_orderposition.positionid}" if medium.linked_orderposition_id else '', - medium.linked_giftcard.secret if medium.linked_giftcard_id else '', - medium.notes, - ] - yield row + for op in medium.linked_orderpositions: + yield [ + medium.type, + medium.identifier, + _('Yes') if medium.active else _('No'), + date_format(medium.expires, 'SHORT_DATETIME_FORMAT') if medium.expires else '', + medium.customer.identifier if medium.customer_id else '', + f"{op.order.code}-{op.positionid}", + medium.linked_giftcard.secret if medium.linked_giftcard_id else '', + medium.notes, + ] + else: + yield [ + medium.type, + medium.identifier, + _('Yes') if medium.active else _('No'), + date_format(medium.expires, 'SHORT_DATETIME_FORMAT') if medium.expires else '', + medium.customer.identifier if medium.customer_id else '', + '', + medium.linked_giftcard.secret if medium.linked_giftcard_id else '', + medium.notes, + ] def get_filename(self): return f'{self.organizer.slug}_media'