Как вывести сообщения об ошибках или валидации в ModelForm в 2022 году
Я потратил несколько часов на изучение интернета, особенно официальной документации Django, но до сих пор мне не ясно, какой вариант лучше в 2022 году (так как почти все вопросы, которые я читаю на SO, > 6 yo) и есть разные мнения о том, лучше ли хрустящие формы или нет.
Рекомендуется ли использовать хрустящие формы?
Как я могу (и какой наиболее рекомендуемый способ) получить типичные сообщения об ошибках валидации?
Например: "this field is mandatory
" или "this input accepts numbers only
"? Я видел некоторые страницы Django, использующие эти сообщения по умолчанию, но я не знаю, как показать их в моих ModelForm
полях.
Допустим, у меня есть следующая модель:
class Project(models.Model):
project_name = models.CharField(max_length=250, null=False, blank=False)
status = models.CharField(
max_length=250,
null=True,
blank=True,
default=PROJECT_STATUS_DEFAULT,
choices=PROJECT_STATUS,
)
creation_date = models.DateField(max_length=250, null=False, blank=False)
project_code = models.IntegerField(null=True, blank=True)
notes = models.CharField(max_length=250, null=True, blank=True)
Для модели Project
у меня есть следующее ModelForm
:
class CreateNewProjectForm(ModelForm):
creation_date = forms.DateField(widget=forms.DateInput(format = '%d/%m/%Y'), input_formats=settings.DATE_INPUT_FORMATS) #UK Date format
class Meta:
model = Project
fields = '__all__'
Вид, когда я пытаюсь создать новый объект Project
:
def add_new_project(request):
context = {}
if request.method == 'POST':
form = CreateNewProjectForm(request.POST)
if form.is_valid():
form.save()
return redirect('project_page')
else:
print (form.errors)
form = CreateNewProjectForm()
context['form'] = form
return render(request, 'new_project.html', context)
HTML часть:
Вы можете указать ошибку для каждого поля следующим образом
{% if form.field_name.errors %}
{{ form.field_name.errors }}
{% endif %}