diff --git a/cookbook/migrations/0191_foodnutrition_food_nutrition_unique_per_space_and_more.py b/cookbook/migrations/0191_foodnutrition_food_nutrition_unique_per_space_and_more.py new file mode 100644 index 000000000..c1c9d9db7 --- /dev/null +++ b/cookbook/migrations/0191_foodnutrition_food_nutrition_unique_per_space_and_more.py @@ -0,0 +1,21 @@ +# Generated by Django 4.1.7 on 2023-02-24 21:15 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('cookbook', '0190_nutritiontype_foodnutrition'), + ] + + operations = [ + migrations.AddConstraint( + model_name='foodnutrition', + constraint=models.UniqueConstraint(fields=('food', 'nutrition_type', 'space'), name='food_nutrition_unique_per_space'), + ), + migrations.AddConstraint( + model_name='nutritiontype', + constraint=models.UniqueConstraint(fields=('space', 'name'), name='nutrition_type_unique_name_per_space'), + ), + ] diff --git a/cookbook/models.py b/cookbook/models.py index d53e706c2..2fa06145a 100644 --- a/cookbook/models.py +++ b/cookbook/models.py @@ -751,6 +751,11 @@ class NutritionType(models.Model, PermissionModelMixin): def __str__(self): return f'{self.name}' + class Meta: + constraints = [ + models.UniqueConstraint(fields=['space', 'name'], name='nutrition_type_unique_name_per_space') + ] + class FoodNutrition(models.Model, PermissionModelMixin): food_amount = models.DecimalField(default=0, decimal_places=2, max_digits=32) @@ -765,6 +770,11 @@ class FoodNutrition(models.Model, PermissionModelMixin): def __str__(self): return f'{self.food_amount} {self.food_unit} {self.food}: {self.nutrition_amount} {self.nutrition_type.unit} {self.nutrition_type.name}' + class Meta: + constraints = [ + models.UniqueConstraint(fields=['food', 'nutrition_type', 'space'], name='food_nutrition_unique_per_space') + ] + class NutritionInformation(models.Model, PermissionModelMixin): fats = models.DecimalField(default=0, decimal_places=16, max_digits=32)