inhabilitar campos de un formulario en tiempo real desde el template, según el valor de otro campo del mismo formulario

12 views
Skip to first unread message

wilmer urango

unread,
Jan 9, 2020, 11:46:53 AM1/9/20
to Django-es
buenas..

he tenido un inconveniente que llevo días sin poder resolver:

Quiero que al momento de estar llenando el formulario (del modelo Cpp_proveedor_detalle ) desde el template, se desabiliten o habiliten los campos "valor_produc ", "cant_flete ", "valor_flete ", dependiendo del valor que seleccione en el campo "categoria".

modelos:


class Categoria(models.Model):
    nombre = models.CharField('Nombre del Producto'null=Trueblank=Falsemax_length = 70
    
    def __str__(self):
        return '%s' % (self.nombre)
    
    class Meta:
        ordering = ['nombre']

class Cpp_proveedor_detalle(models.Model):
    cpp_proveedor = models.ForeignKey(cpp_proveedor, null=Trueblank=Falseon_delete=models.CASCADE,verbose_name='N° de Factura')
    categoria = models.ForeignKey(categoria, null = Trueblank = Falseon_delete=models.CASCADE, verbose_name = 'Categoria')
    centro_costo = models.ForeignKey(centro_costo, null=Trueblank=Trueon_delete=models.CASCADE,verbose_name='Centro de Costo')
    producto = models.ForeignKey(producto, null=Trueblank=Trueon_delete=models.CASCADE,verbose_name='Producto')
    cant_produc = models.FloatField('Cantidad Productos',null=Trueblank=Falsedefault=0)
    valor_produc = models.FloatField('Valor del Producto'null=Trueblank=Truedefault=0)
    cant_flete =  models.FloatField('Cantidad Flete',null=Trueblank=Falsedefault=0)
    valor_flete = models.FloatField('Valor Flete',null=Trueblank=Falsedefault=0)
    fecha_cpp_prov_detal =  models.DateField('Fecha'null=Trueblank=False)

forms:

class cpp_proveedor_detalleform(forms.ModelForm):
    class Meta:
        model = cpp_proveedor_detalle

        fields=(
            '__all__'
        )

    def __init__(self, *args, **kwargs):  
        super().__init__(*args, **kwargs)  
        for field in iter(self.fields):  
            self.fields[field].widget.attrs.update({  
                'class''form-control'  
            })     
        self.fields['fecha_cpp_prov_detal'].widget.attrs['readonly'] = True  

views
def cpp_proveedor_detalleCrear(requestid_):
    
    contar_detalle_prov=cpp_proveedor_detalle.objects.count()

    #esto es para identificar el ultimo elemeto que corresponda al "id" de cpp_proveedor que se esta llamando
    explorar_elem = cpp_proveedor_detalle.objects.filter(cpp_proveedor = id_)
    contar_elem = explorar_elem.count()
 
    if request.method == 'POST':
        form = cpp_proveedor_detalleform(request.POST)
        if form.is_valid(): 
            form.save()
        return redirect('/crearcppprovdetal/'+str(id_)+'/')
    else:
        if contar_elem != 0:
            a=explorar_elem.last()
            temporal=cpp_proveedor_detalle.objects.get(id=a.id)
            form = cpp_proveedor_detalleform(instance=temporal)
        else:
            form = cpp_proveedor_detalleform()
    return render(request, 'proveedores/cpp_proveedor_detalle_form.html', {'form':form, 'cpp_proveedor_detalles':explorar_elem, 'id_':id_})

Agradezco su ayuda.



Ing.Daniel Bojorge

unread,
Jan 9, 2020, 1:59:29 PM1/9/20
to djan...@googlegroups.com
Te sugiero hacer eso desde el Backend con javascript o jquery, vigilar el evento change de los inputs que desees que al cambiarlo, se activen/inactiven los demás.



Mi Blog
Nicaragua

"Si ustedes permanecen unidos a mí, y si permanecen fieles a mis enseñanzas, pidan lo que quieran y se les dará.
(Juan 15:7 DHH)
Bendito el varón que se fía en el SEÑOR, y cuya confianza es el SEÑOR.
(Jeremías 17:7 RV2000)




--
--
Ha recibido este mensaje porque está suscrito a Grupo "Grupo de Usuarios del Framework Django de habla hispana" de Grupos de Google.
Si quieres publicar en este grupo, envía un mensaje de correo
electrónico a djan...@googlegroups.com
Para anular la suscripción a este grupo, envíe un mensaje a django-es-...@googlegroups.com
Para obtener más opciones, visita este grupo en http://groups.google.com.bo/group/django-es.
---
Has recibido este mensaje porque estás suscrito al grupo "Django-es" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a django-es+...@googlegroups.com.
Para ver esta conversación en el sitio web, visita https://groups.google.com/d/msgid/django-es/b51f65d0-a039-4f58-b487-daa148f55e1f%40googlegroups.com.
Reply all
Reply to author
Forward
0 new messages