diff --git a/recipes/forms.py b/recipes/forms.py index 3b4c6d9..40afecc 100644 --- a/recipes/forms.py +++ b/recipes/forms.py @@ -2,13 +2,16 @@ from django.forms import ModelForm, BooleanField, ValidationError from .models import Recipe, Version, Ingredient class VersionForm(ModelForm): + recipe_id: int + class Meta: model = Version fields = ['label', 'slug', 'body'] def clean_slug(self): + recipe = Recipe.objects.get(id=self.recipe_id) slug = self.cleaned_data['slug'] - if Version.objects.filter(slug=slug).exists(): + if recipe.versions.filter(slug=slug).count() > 0: # type: ignore raise ValidationError('A recipe version with this slug already exists.') return slug diff --git a/recipes/views.py b/recipes/views.py index f153c09..51ac460 100644 --- a/recipes/views.py +++ b/recipes/views.py @@ -43,6 +43,7 @@ def add_version(request, slug_recipe): if request.method == 'POST': form = VersionForm(request.POST) + form.recipe_id = recipe.id # type: ignore if form.is_valid(): version = form.save(commit=False)