Наследование форм Django / Crispy Не Переводится на визуализированную HTML-страницу

#python #django #django-templates #django-crispy-forms #django-inheritance

Вопрос:

Я пытаюсь настроить шаблон для своей формы в Django, используя forms.py и хрустящие, но все, что я указываю в своих формах. В конечном счете, в данный момент я просто пытаюсь разместить два поля в одной строке, и шаблон формы не отображается в формате при отображении. Я считаю, что это может быть проблемой наследования, но я не уверен на 100%. Если я возьму отдельные объекты, такие как {{ form.phone_number|as_crispy_field }} , я могу отформатировать их с <Div> CSS помощью HTML-шаблона и в нем, но это кажется ненужным.

 #forms.py
from django import forms
from .models import *
from crispy_forms.helper import FormHelper
from crispy_forms.bootstrap import FormActions
from crispy_forms.layout import Submit, Layout, Row, Column, Hidden


class CustomerCreateForm(forms.Form):

    customer_name = forms.CharField(max_length=100)
    phone_number = forms.CharField(max_length=12)
    business_address = forms.BooleanField(required=False, initial=True)
    street_address_1 = forms.CharField(max_length=255)
    street_address_2 = forms.CharField(max_length=255, required=False)
    city = forms.CharField(max_length=100)
    region = forms.ChoiceField(choices=REGIONS_OPTIONS)
    postal_code = forms.CharField(help_text="Please enter in the format 'A1A1A1'", max_length=6)
    country = forms.ChoiceField(choices=COUNTRY_OPTIONS)

    def __init__(self, *args, **kwargs):
        super(CustomerCreateForm, self).__init__(*args, **kwargs)
        self.helper = FormHelper()
        self.helper.form_method = 'POST'
        self.helper.attrs = {
            'novalidate': ''
        }
        self.helper.layout = Layout(
            Row(
                Column('customer_name', css_class='form-group col-md-2 mb-0'),
                Column('phone_number', css_class='form-group col-md-2 mb-0'),
                css_class='form-row'
            ),
            # FormActions(
            #     Submit('submit', 'Create Me')
            # )
        )
 
 #formtest2.html

{% extends 'blog/base_no_top_navbar.html' %}
{% load crispy_forms_tags %}
{% block content %}
<div class="'content-section">
      <form method="POST" novalidate>
        {% csrf_token %}
        <fieldset class="form-group">
          <legend class="border-bottom mb-4">New Customer</legend>
            {{ form|crispy }}
        </fieldset>
        <div class="form-group">
          <button class="btn btn-outline-info" type="submit">Create</button>
        </div>
      </form>

</div>
{% endblock content %}
 
 class CustomerCreateView(LoginRequiredMixin, FormView):
    template_name = 'ics/formtest2.html'
    form_class = CustomerCreateForm

    def form_valid(self, form):
        customer_name = form.cleaned_data['customer_name']
        phone_number = form.cleaned_data['phone_number']
        business_address = form.cleaned_data['business_address']
        street_address_1 = form.cleaned_data['street_address_1']
        street_address_2 = form.cleaned_data['street_address_2']
        city = form.cleaned_data['city']
        region = form.cleaned_data['region']
        postal_code = form.cleaned_data['postal_code']
        country = form.cleaned_data['country']


        customer = Customer.objects.create(customer_name=customer_name, phone_number=phone_number)
        address = Address.objects.create(business_address=business_address, street_address_1=street_address_1,
                                         street_address_2=street_address_2, city=city, region=region,
                                         postal_code=postal_code, country=country)
        customer.save()
        address.save()

        return super().form_valid(form)

    def get_success_url(self):
        return reverse('customer-detail', kwargs={'pk': self.object.pk})
 
 #urls.py

urlpatterns = [
    path('customer/new', CustomerCreateView.as_view(), name='customer-create')]