Как добраться до стандартных сообщений об ошибках в формах django?
Подскажите новичку в джанго. Создал простой типовой проект, но после того, как решил его детализировать, появились вопросы. С каждым из которых могу зависать по нескольку дней, хотя решение потом находится простейшее. Так решил полностью отказаться от функций-контроллеров, передав их обязанности типовым классам-контроллерам - возникла проблема с обработкой ошибок при заполнении форм
models.py (фрагмент):
class Bb(models.Model):
title = models.CharField(max_length=32, verbose_name='Товар')
content = models.TextField(default='', blank=True, verbose_name='Описание')
price = models.DecimalField(max_digits=10, decimal_places=2, default=0.00, verbose_name='Цена')
published = models.DateTimeField(auto_now_add=True, db_index=True, verbose_name='Дата и время публикации', )
rubric = models.ForeignKey(Rubric, on_delete=models.PROTECT, null=True, verbose_name='Категории',)
class Meta:
verbose_name_plural = 'Объявления'
verbose_name = 'Объявление'
ordering = ('-published', )
def __str__(self):
return f"{self.title} <{self.rubric}> (id={self.id})"
vies.py (фрагмент):
class BbCreateView(CreateView):
template_name = 'bboard/create.html'
form_class = BbForm
success_url = reverse_lazy('bboard:index')
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context['rubrics'] = Rubric.objects.all()
context['editing'] = 'CREATE'
return context
models.py (соответствующий фрагмент):
class Bb(models.Model):
title = models.CharField(max_length=32, verbose_name='Товар')
content = models.TextField(default='', blank=True, verbose_name='Описание')
price = models.DecimalField(max_digits=10, decimal_places=2, default=0.00, verbose_name='Цена')
published = models.DateTimeField(auto_now_add=True, db_index=True, verbose_name='Дата и время публикации', )
rubric = models.ForeignKey(Rubric, on_delete=models.PROTECT, null=True, verbose_name='Категории',)
class Meta:
verbose_name_plural = 'Объявления'
verbose_name = 'Объявление'
ordering = ('-published', )
def __str__(self):
return f"{self.title} <{self.rubric}> (id={self.id})"
create.html (фрагмент):
<form method= "post">
{% csrf_token %}
<table>
{{ form.as_table }}
</table>
{% if editing == 'CREATE' %}
<input type= "submit" value="Добавить" >
{% else %}
<input type= "submit" value="Изменить" >
{% endif %}
</form>
Если ввести в форму невалидные данные или оставить пустыми обязательные поля, даже не вызывает is_invalid контроллера (если ее перегрузить). Все остается на странице, как и должно быть. Не могу только добраться до сообщений об ошибках в соответствующих полях. messages и form.errors так и остаются пустыми, потому что не вызывается POST без правильного заполнения формы. Всплывают только стандартные сообщения об ошибках в форме: 'Please fill out this field'
Как до них добраться. Пробовал добавлять error_messages в форму в Meta, в соответствующий поля атрибутом, в саму модель атрибутом к полям. Все игнорируется. Подскажите, можно ли это всковырять?