[pyar] Renderizar 2 radio button con input text en form de django

Emiliano Dalla Verde Marcozzi edvm en fedoraproject.org
Jue Ago 4 15:00:46 ART 2016


¿Pudieron hacer el débito en mi cuenta?El 4 de agosto de 2016, 14:54, Juan
Cruz Piñero <jpinero en fi.uncoma.edu.ar> escribió:

> En si parece que necesitas redefinir widgets por defecto, igual me parece
> que te quedaria un diseño mas claro con los dos widgets juntos y que los
> inputs se habiliten/deshabiliten o se muestren/oculten dependiendo del
> valor seleccionado.
>
> Para esto particularmente me parece que al ser comportamiento dinámico, te
> va a quedar mejor con javascript/jquery.
>
> 1. En el form de django podes pisar la inicialización del form para
> asignarle a los widgets de ambos campos el atributo 'hidden'.
> https://docs.djangoproject.com/es/1.9/ref/forms/widgets/#widget
>
> 2. Cada vez que te cambia el grupo de los radio atrapas el valor nuevo del
> selector y haces el show del campo correspondiente, y ocultas el otro.
>
> El 3 de agosto de 2016, 23:11, Emiliano Dalla Verde Marcozzi <
> edvm en fedoraproject.org> escribió:
>
>> Buenas Lista!
>> Les consulto, en un form de django, como puedo lograr hacer lo siguiente?:
>> https://edvm.chiba.ga/issue.png
>> Price y Discount tienen que ser <input type="text">, para permitirle al
>> usuario ingresar valores.
>> Y los radio buttons son para que el usuario elija si quiere definir un
>> precio, o quiere definir un descuento (se excluyen mutuamente).
>> Desde ya, muchas gracias!
>>
>> Juan Cruz, muchas gracias por tu respuesta!
Ayer termine haciendo algo parecido a lo que comentar. Primero, defini un
Widget como sigue:

class KadusiaPriceInput(NumberInput):

    def render(self, name, value, attrs=None):
        html = super(KadusiaPriceInput, self).render(name, value, attrs)
        radiobtn = '<input type="checkbox" name="{}"><br />'.format('is_' +
name)
        return radiobtn + html

De esta forma agrego el checkbox (antes era radiobutton) a cada field,
'price' y 'discount'.
Luego en el template meti un poco de javascript para manejar los eventos de
cuando se cliquea
un checkbox o el otro:
    <script>
        var price_s = $('input[name=price]');
        var ch_price_s = $('input[name=is_price]');
        var discount_s = $('input[name=discount]');
        var ch_discount_s = $('input[name=is_discount]');
        ch_price_s.on('click', function(e){
          ch_discount_s.prop('checked', false);
          discount_s.val("");
          price_s.focus();
        });
        ch_discount_s.on('click', function(e){
          ch_price_s.prop('checked', false);
          price_s.val("");
          discount_s.focus();
        });
    </script>

No tengo idea si sera la forma correcta de hacerlo (por eso mande el mail),
pero bueno, quedo
andando.
Saludos y muchas gracias!

-- 
Find me at http://edvm.chiba.ga <https://github.com/edvm>

<edvm en python.org.ar>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20160804/67bade65/attachment.html>


Más información sobre la lista de distribución pyar