Не работает пользовательский размер поля в хрустящей форме django

я хочу вывести форму для создания постов. я использую crispy-form и она сейчас выводит: enter image description here

с html-шаблоном:

{% extends 'blog_app/base.html' %}
{% load crispy_forms_tags %}

{% block content %}
    <div class="content-section">
        <form method="POST">
            {% csrf_token %}
            <fieldset class="form-group">
                <legend class="border-bottom mb-4">Create Post</legend>
                {{ form.media }}
                {{ form|crispy }}
            </fieldset>
            <div class="form-group">
                <button class="btn btn-outline-info" type="submit">Post</button>
            </div>
        </form>
    </div>
{% endblock %}

я хочу увеличить размер поля заголовка и уменьшить размер поля содержимого так, чтобы поместился раздел содержимого.

что я пробовал:

  1. в шаблоне, отображать каждое поле как хрустящее поле с заданным css классом:
{% block content %}
    <div class="content-section">
        <form method="POST">
            {% csrf_token %}
            <div class="form-group col-md-8">
                {{ form.title|as_crispy_field }}
            </div>
            <div class="form-group col-md-8">
              {{ form.content|as_crispy_field }}
            </div>
            <div class="form-group">
                <button class="btn btn-outline-info" type="submit">Post</button>
            </div>
        </form>
    </div>
{% endblock %}
  1. в классе формы установите помощника и макет:
class PostCreateForm(forms.ModelForm):
    class Meta:
        model = Post
        fields = ['title', 'content']

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.helper = FormHelper()

        self.layout = Layout(
            Field('title', id="form-title", css_class="col-md-8", name="title"),
            Field('content', id="form-content", css_class="col-md-8", name="title"))

в обоих случаях ничего не меняется. может ли кто-нибудь дать мне указатель?

Убедитесь, что у вас есть правильный пакет шаблонов в вашем settings.py:

CRISPY_TEMPLATE_PACK = 'bootstrap4'

...и используйте ваши столбцы и строки в макете (в помощнике формы, не непосредственно в форме):


from crispy_forms.layout import Layout, HTML, Row, Column


class PostCreateForm(forms.ModelForm):
    
    class Meta:
        model = Post
        fields = ['title', 'content']

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.helper = FormHelper()
        self.helper.layout = Layout(
             Row(
                Column(
                    'title',
                    css_class='col-md-8'
                ),
            ),
             Row(
                Column(
                    'content',
                    css_class='col-md-8'
                ),
            )
        )

Далее, используйте crispy templatetag:

<form method="POST">
    {% csrf_token %}
    <fieldset class="form-group">
        <legend class="border-bottom mb-4">Create Post</legend>
        {{ form.media }}
        {% crispy form %}
    </fieldset>
    <div class="form-group">
        <button class="btn btn-outline-info" type="submit">Post</button>
    </div>
</form>
Вернуться на верх