Я создал форму в Django с полем char с max_length=255 следующим образом:
task = models.CharField(max_length= 255)
Теперь я хочу, чтобы пользователь знал, сколько символов он набрал, если он превышает ограничение в 255 символов, поэтому я сделал следующее:
if form.is_valid():
#some code
else:
messages.info(request,(form.errors.get("task").as_text()))
теперь предположим, что если я наберу 445 символов в поле формы и отправлю, то по умолчанию я получу следующее сообщение об ошибке:
* Ensure this value has at most 255 characters (it has 445).
но вместо этого я хочу изменить это сообщение на:
Error: maximum length limit is 255 characters (it has 445).
Поэтому я попробовал следующее:
class ListForm(ModelForm):
class Meta:
model = ListModel
fields = ["task", "status"]
error_messages = {
'task': {
'max_length': ("Error: maximum length limit is 255 characters"),
},
}
Теперь сообщение было изменено на:
* Error: maximum length limit is 255 characters.
Моя проблема:
- Я не хочу, чтобы
*
отображалось перед сообщениями - Мне не удалось зафиксировать количество введенных пользователем символов, которое отображалось в сообщении по умолчанию, т.е.
(it has 445)
Что я могу сделать, чтобы напечатать Error: maximum length limit is 255 characters (it has 445).
вместо * Error: maximum length limit is 255 characters.
?
HTML
для формы? Я почти уверен, что звездочка*
— это HTML<li>
. - person Countour-Integral   schedule 09.01.2021messages.info
в своем шаблоне. Для меняmessages.info
не содержит звездочки, если я обращаюсь к нему без каких-либо тегов HTML. Стандартный классdjango.forms.Form
не отображает HTML дляmessages.info
, вы должны получить к нему доступ самостоятельно. - person Countour-Integral   schedule 09.01.2021{% if messages %}{% for message in messages %} <p>{{ message }}</p> {% endfor %}{% endif %}
, поэтому я не думаю, что использую какой-либо класс ‹li› в своем HTML. - person yogeshiitm   schedule 09.01.2021messages.info(request, "some test string")
и сообщить нам, есть ли та же проблема. Вы также можете попробоватьprint(form.errors.get("task").as_text())
, чтобы увидеть, есть ли там звездочка или это проблема HTML. Также скобки лишние - person Countour-Integral   schedule 09.01.2021messages.info(request, "string")
просто отображает строку без*
, но да,*
появляется даже наprint(form.errors.get("task").as_text())
. На самом деле, если я делаюprint(form.errors.get("task"))
, то он печатает<ul class="errorlist"><li>"some_string"</li></ul>
, поэтому класс ‹li› находится в пределахform.errors
- person yogeshiitm   schedule 09.01.2021