From f4edf65c22466b54218553af308d55bc142f0386 Mon Sep 17 00:00:00 2001 From: Nils Pukropp Date: Mon, 16 Feb 2026 19:16:47 +0100 Subject: [PATCH] fixed backend python error --- .../api/management/commands/sync_flavors.py | 4 +--- .../0011_alter_flavor_name_and_more.py | 22 +++++++++++++++++++ backend/api/models.py | 10 +++++++-- 3 files changed, 31 insertions(+), 5 deletions(-) create mode 100644 backend/api/migrations/0011_alter_flavor_name_and_more.py diff --git a/backend/api/management/commands/sync_flavors.py b/backend/api/management/commands/sync_flavors.py index 16975f8..4a77fa5 100644 --- a/backend/api/management/commands/sync_flavors.py +++ b/backend/api/management/commands/sync_flavors.py @@ -126,9 +126,7 @@ class Command(BaseCommand): flavor = Flavor.objects.filter(name=title, category=category, is_legacy=False).first() if not flavor: - # One last check: if name exists in DIFFERENT category, we still create a new one - # If name exists in SAME category, we would have found it above. - flavor = Flavor(external_id=p['id'], name=title, is_legacy=False) + flavor = Flavor(external_id=p['id'], name=title, category=category, is_legacy=False) created_count += 1 else: updated_count += 1 diff --git a/backend/api/migrations/0011_alter_flavor_name_and_more.py b/backend/api/migrations/0011_alter_flavor_name_and_more.py new file mode 100644 index 0000000..6f11362 --- /dev/null +++ b/backend/api/migrations/0011_alter_flavor_name_and_more.py @@ -0,0 +1,22 @@ +# Generated by Django 6.0.2 on 2026-02-16 18:16 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('api', '0010_user_avatar'), + ] + + operations = [ + migrations.AlterField( + model_name='flavor', + name='name', + field=models.CharField(max_length=100), + ), + migrations.AddConstraint( + model_name='flavor', + constraint=models.UniqueConstraint(fields=('name', 'category'), name='unique_flavor_name_per_category'), + ), + ] diff --git a/backend/api/models.py b/backend/api/models.py index 06f63e1..fc1e82f 100644 --- a/backend/api/models.py +++ b/backend/api/models.py @@ -54,7 +54,7 @@ class Category(models.Model): class Flavor(models.Model): category = models.ForeignKey(Category, related_name='flavors', on_delete=models.CASCADE) - name = models.CharField(max_length=100, unique=True) + name = models.CharField(max_length=100) # Removed unique=True here description = models.TextField(blank=True) image_url = models.URLField(max_length=1000, blank=True, null=True) image = models.ImageField(upload_to='flavors/', blank=True, null=True) @@ -64,8 +64,14 @@ class Flavor(models.Model): external_id = models.BigIntegerField(unique=True, null=True, blank=True) created_at = models.DateTimeField(auto_now_add=True) + class Meta: + # This allows "Erdbeere" in Iced Tea and "Erdbeere" in Milkshake + constraints = [ + models.UniqueConstraint(fields=['name', 'category'], name='unique_flavor_name_per_category') + ] + def __str__(self): - return self.name + return f"{self.name} ({self.category.name})" @property def get_average_rating(self):