Как именно я могу использовать crispy_addon для добавления поля формы?

#django #django-crispy-forms

#django #django-crispy-forms

Вопрос:

Я использую Django crispy forms и modelform_factory для создания моей формы. Это выглядит примерно так:

 ModelForm = modelform_factory(Street)
form = ModelForm(request.POST or None, instance=my_record)
  

Затем в шаблоне я запускаю это:

 {% crispy form %}
  

И он генерирует мою форму bootstrap4 точно так, как задумано. Тем не менее, я хотел бы иметь одно поле в моей очень длинной форме с добавленным текстом (@ для дескриптора Twitter). В документации говорится:

 templatetags.crispy_forms_field.crispy_addon(field, append='', prepend='', form_show_labels=True)[source]

Renders a form field using bootstrap’s prepended or appended text:

{% crispy_addon form.my_field prepend="$" append=".00" %}

You can also just prepend or append like so

    {% crispy_addon form.my_field prepend=”$” %} {% crispy_addon form.my_field append=”.00” %}
  

Я попытался использовать это следующим образом в своем шаблоне:

 {% crispy form %}
{% crispy_addon form.url prepend=”@” %}
  

Но это возвращает следующую ошибку:

 Invalid block tag on line 12: 'crispy_addon', expected 'endblock'. Did you forget to register or load this tag?
  

Что я здесь делаю не так?

Ответ №1:

Вам нужно будет загрузить тег в свой шаблон и добавить следующий в начало вашего шаблона. Причина в том, что этот тег находится в файле, отличном от тега {% crispy %}.

 {% load crispy_forms_field %}
  

Комментарии:

1. Ах, здорово, такое простое решение! Спасибо!