From 5fbf7e4f1464fa12c880973bad64bf7d5c885df1 Mon Sep 17 00:00:00 2001 From: Mira Weller Date: Fri, 7 Aug 2026 21:47:14 +0200 Subject: [PATCH] add order-level QuestionAnswers --- .../0310_alter_questionanswer_order_level.py | 28 +++++++++++++++++++ src/pretix/base/models/orders.py | 15 +++++++++- 2 files changed, 42 insertions(+), 1 deletion(-) create mode 100644 src/pretix/base/migrations/0310_alter_questionanswer_order_level.py diff --git a/src/pretix/base/migrations/0310_alter_questionanswer_order_level.py b/src/pretix/base/migrations/0310_alter_questionanswer_order_level.py new file mode 100644 index 0000000000..cb9dcf55db --- /dev/null +++ b/src/pretix/base/migrations/0310_alter_questionanswer_order_level.py @@ -0,0 +1,28 @@ +# Generated by Django 5.2.15 on 2026-08-07 19:44 + +import django.db.models.deletion +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('pretixbase', '0309_questionnaire_questionnairechild'), + ] + + operations = [ + migrations.AddField( + model_name='questionanswer', + name='checkoutsession', + field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='answers', to='pretixbase.checkoutsession'), + ), + migrations.AddField( + model_name='questionanswer', + name='order', + field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='answers', to='pretixbase.order'), + ), + migrations.AlterUniqueTogether( + name='questionanswer', + unique_together={('cartposition', 'question'), ('checkoutsession', 'question'), ('order', 'question'), ('orderposition', 'question')}, + ), + ] diff --git a/src/pretix/base/models/orders.py b/src/pretix/base/models/orders.py index 3036c68e0f..9d8536e4b7 100644 --- a/src/pretix/base/models/orders.py +++ b/src/pretix/base/models/orders.py @@ -1336,6 +1336,14 @@ class QuestionAnswer(models.Model): 'CartPosition', null=True, blank=True, related_name='answers', on_delete=models.CASCADE ) + order = models.ForeignKey( + 'Order', null=True, blank=True, + related_name='answers', on_delete=models.CASCADE + ) + checkoutsession = models.ForeignKey( + 'CheckoutSession', null=True, blank=True, + related_name='answers', on_delete=models.CASCADE + ) question = models.ForeignKey( Question, related_name='answers', on_delete=models.CASCADE ) @@ -1351,7 +1359,12 @@ class QuestionAnswer(models.Model): objects = ScopedManager(organizer='question__event__organizer') class Meta: - unique_together = [['orderposition', 'question'], ['cartposition', 'question']] + unique_together = [ + ['orderposition', 'question'], + ['cartposition', 'question'], + ['order', 'question'], + ['checkoutsession', 'question'], + ] @property def backend_file_url(self):