Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from django import forms
- from .models import Cliente
- from .models import Contrato,Servicio, Direccion
- class ClienteForm(forms.ModelForm):
- class Meta:
- model = Cliente
- fields = '__all__' # Incluye todos los campos del modelo
- # O puedes especificar los campos individualmente:
- # fields = ['documento', 'nombre', 'apellido_paterno', ...]
- def clean_documento(self):
- documento = self.cleaned_data.get("documento")
- if Cliente.objects.filter(documento=documento).exists():
- raise forms.ValidationError("El número de documento ya está registrado.")
- return documento
- class ContratoForm(forms.ModelForm):
- servicios = forms.ModelMultipleChoiceField(
- queryset=Servicio.objects.all(),
- widget=forms.CheckboxSelectMultiple(attrs={'class': 'form-check-input', 'style': 'height: 350px; overflow-y: auto; display: block;'}),
- required=True,
- label="Servicios"
- )
- descripcion = forms.CharField(
- widget=forms.Textarea(attrs={'class': 'form-control', 'rows': 2})
- )
- fecha_inicio = forms.DateField(
- widget=forms.DateInput(attrs={'class': 'form-control', 'type': 'date'}),
- label="Fecha de Inicio"
- )
- fecha_pago = forms.DateField(
- widget=forms.DateInput(attrs={'class': 'form-control', 'type': 'date', 'readonly': 'readonly'}),
- label="Fecha de Pago"
- )
- direccion_instalacion = forms.ModelChoiceField(
- queryset=Direccion.objects.none(), # Inicialmente vacío
- required=True,
- widget=forms.Select(attrs={'class': 'form-control'}),
- label="Dirección de Instalación"
- )
- class Meta:
- model = Contrato
- fields = ['cliente', 'numero_abonado', 'descripcion', 'total', 'fecha_inicio', 'fecha_pago', 'direccion_instalacion', 'servicios']
- labels = {
- 'cliente': 'Cliente',
- 'numero_abonado': 'N° Abonado',
- 'descripcion': 'Descripción',
- 'total': 'Total',
- 'fecha_inicio': 'Fecha de Inicio',
- 'fecha_pago': 'Fecha de Pago',
- 'direccion_instalacion': 'Dirección de Instalación',
- 'servicios': 'Servicios'
- }
- widgets = {
- 'cliente': forms.Select(attrs={'class': 'form-control'}),
- 'numero_abonado': forms.TextInput(attrs={'class': 'form-control'}),
- 'total': forms.NumberInput(attrs={'class': 'form-control', 'step': '0.01', 'readonly': 'readonly'}),
- }
- def __init__(self, *args, **kwargs):
- super().__init__(*args, **kwargs)
- if 'cliente' in self.data:
- try:
- cliente_id = int(self.data.get('cliente'))
- self.fields['direccion_instalacion'].queryset = Direccion.objects.filter(cliente_id=cliente_id)
- except (ValueError, TypeError):
- self.fields['direccion_instalacion'].queryset = Direccion.objects.none()
- elif self.instance.pk:
- self.fields['direccion_instalacion'].queryset = Direccion.objects.filter(cliente=self.instance.cliente)
- self.fields['cliente'].queryset = self.fields['cliente'].queryset.order_by('documento')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement