Форма не действительна, но 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__'
Вернуться на верх