Форма не действительна, но Django не вернул никакой ошибки
есть два атрибута 'name' и 'slug', как вы можете видеть в коде, я отправляю неправильные данные в 'slug' и 'name' пуст, но валидация не сработала.
Модели
class Tag (models.Model):
name = models.CharField(max_length=50,
db_index=True)
slug = models.SlugField(unique=True,
help_text='a label for url config')
class Meta:
ordering = ['name']
def __str__(self):
return self.name.title()
def get_absolute_url(self):
return reverse('organizer:tag_detail', kwargs={'slug': self.slug})
формы
class TagForm (forms.Form):
class Meta:
model = Tag
fields = '--all--'
def clean_name (self):
return self.cleaned_data['name'].lower()
def clean_slug (self):
new_slug = (self.cleaned_data['slug'].lower())
if new_slug == 'create':
raise ValidationError('slug may not be "create".')
else:
return new_slug
оболочка
In [11]: from organizer.forms import TagForm
In [12]: tf = TagForm({'slug': 'create'})
In [13]: tf.errors
Out[13]: {}
Ваш класс формы должен иметь forms.ModelForm
в качестве базового класса для создания формы из модели.
Чтобы включить все поля модели в форму, нужно использовать fields = '__all__'
, а не fields = '--all--'
class TagForm (forms.ModelForm):
class Meta:
model = Tag
fields = '__all__'