django-project/recipes/forms.py
2023-03-03 22:21:53 +01:00

25 lines
733 B
Python

from django.forms import ModelForm, ValidationError, modelformset_factory, BooleanField
from .models import Recipe, Version, Ingredient
class VersionForm(ModelForm):
recipe_id: int
class Meta:
model = Version
fields = ['label', 'slug', 'body', 'author']
def clean_slug(self):
slug = self.cleaned_data['slug']
if 'slug' in self.changed_data:
recipe = Recipe.objects.get(id=self.recipe_id)
if recipe.versions.filter(slug=slug).count() > 0: # type: ignore
raise ValidationError('A recipe version with this slug already exists.')
return slug
class IngredientForm(ModelForm):
class Meta:
model = Ingredient
fields = ['text']
IngredientFormSet = modelformset_factory(Ingredient, fields=('text',), extra=1)