Как сделать так, чтобы набор форм наследовал стили формы? Я имею в виду, как я могу стилизовать набор форм в 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
здесь я помещаю набор форм, который не имеет стиля
Еще один вариант, который вы можете рассмотреть - 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__'