Как сделать так, чтобы набор форм наследовал стили формы? Я имею в виду, как я могу стилизовать набор форм в Django?

У меня проблема; я хочу поместить стили в мой набор форм, потому что он не наследует их от основной формы, и дизайн выглядит ужасно, я не знаю, как это исправить или есть ли виджет, чтобы поля выглядели лучше. Большое спасибо

Parte/forms.py

from django import forms
from django.forms import formset_factory

from .models import Parte


class ParteForm(forms.ModelForm):
    class Meta:
        model=Parte
        fields=['codigo','descripcion','quantity','unit_price','total_price','tax_free']

Presupuestos/forms.py

class PresupuestosParteForm(forms.ModelForm):
    class Meta:
        model = Parte
        fields = '__all__'
        widgets = {
            'codigo': forms.TextInput(
                attrs={
                    'class': 'form-control'
                }
            ),
            'quantity': forms.NumberInput(
                attrs={
                    'class': 'form-control',
                }
            ),
            'unit_price': forms.NumberInput(
                attrs={
                    'class': 'form-control',
                    'onchange': 'multiplicar()',
                }
            ),
            'total_price': forms.NumberInput(
                attrs={
                    'class': 'form-control',

                }
            ),
            'tax_free': forms.CheckboxInput(
                attrs={
                    'class': 'form-check-input',
                    'onclick': 'taxes_free(multiplicar())',
                }
            ),
            'descripcion': forms.TextInput(
                attrs={
                    'class': 'form-control'
                }
            ),
            'descuento': forms.NumberInput(
                attrs={
                    'class': 'form-control',
                    'onchange': 'totales()',

                }
            ),
            'total': forms.NumberInput(
                attrs={
                    'class': 'form-control',
                }
            ),

        }


ParteFormSet = formset_factory(ParteForm, extra=1)

Budgets/views.py

<>>>.
def create_Presupuestos(request):
   #Crear cada uno de los formularios y reunirlos
   presupuestosclientesform=PresupuestosClientesForm(request.POST or None)
   presupuestosvehiculosform=PresupuestosVehiculosForm(request.POST or None)
   presupuestosparteform=PresupuestosParteForm(request.POST or None)
   presupuestosmanoobraform=PresupuestosManoObraForm(request.POST or None)
   presupuestospagosform=PresupuestosPagosForm(request.POST or None)

   #Creación del formset de parteform

   if request.method == 'POST':
       formset = ParteFormSet(request.POST)
       if formset.is_valid():
           # extract name from each form and save
           pass
       else:
           formset = ParteFormSet()
   else:
       formset = ParteFormSet()


   if presupuestosclientesform.is_valid():
       presupuestosclientesform.save()
       return redirect('presupuestos:index')
   return render(request,'Presupuestos/presupuestos-forms.html',{'presupuestosclientesform':presupuestosclientesform,'presupuestosvehiculosform':presupuestosvehiculosform, 'presupuestosparteform':presupuestosparteform, 'presupuestosmanoobraform':presupuestosmanoobraform,'presupuestospagosform':presupuestospagosform,'formset':formset})

budgets-forms.html

здесь я помещаю набор форм, который не имеет стиля

Я думаю, crispy forms - это именно то, что вы ищете

Без хрустящей корочки

enter image description here

С хрустящей корочкой

enter image description here

Еще один вариант, который вы можете рассмотреть - django-widget-tweaks. Он позволяет вам делать стилизацию прямо в шаблоне.django-widget-tweaks

Другой способ - обновить форму с помощью встроенного виджета, как показано ниже :-

class PresupuestosParteForm(forms.ModelForm):
    codigo = forms.CharField(widget=forms.TextInput(attrs={'placeholder': 'codigo', 'class': 'form-control'}))
    quantity = forms.CharField(widget=forms.NumberInput(attrs={'placeholder': 'quantity', 'class': 'form-control'}))
    unit_price = forms.CharField(widget=forms.NumberInput(attrs={'placeholder': 'unit_price', 'class': 'form-control', 'onchange': 'multiplicar()'}))
    total_price = forms.CharField(widget=forms.NumberInput(attrs={'placeholder': 'total_price', 'class': 'form-control'}))
    tax_free = forms.CharField(widget=forms.CheckboxInput(attrs={'placeholder': 'tax_free', 'class': 'form-check-input','onclick': 'taxes_free(multiplicar())'}))
    descripcion = forms.CharField(widget=forms.NumberInput(attrs={'placeholder': 'descripcion', 'class': 'form-control'}))
    descuento = forms.CharField(widget=forms.NumberInput(attrs={'placeholder': 'descuento', 'class': 'form-control', 'onchange': 'totales()'}))
    total = forms.CharField(widget=forms.NumberInput(attrs={'placeholder': 'total', 'class': 'form-control'}))

    class Meta:
        model = Parte
        fields = '__all__'
Вернуться на верх