Foros del Web » Programando para Internet » Python »

Problemas con widgets

Estas en el tema de Problemas con widgets en el foro de Python en Foros del Web. Hola soy nueva programando con este lenguaje y estoy queriendo hacer un widgets que a partir de un checkbox habilite un cuadro texto para cargar ...
  #1 (permalink)  
Antiguo 06/02/2014, 16:54
 
Fecha de Ingreso: febrero-2014
Mensajes: 7
Antigüedad: 10 años, 2 meses
Puntos: 0
Problemas con widgets

Hola soy nueva programando con este lenguaje y estoy queriendo hacer un widgets que a partir de un checkbox habilite un cuadro texto para cargar la opcion "otros". La idea es un listado de opciones y una de ellas tenga la opción otros que permita cargarlo.

Ej este es initial_data.json con el listado y uno de ellos.

{
"model": "Especialista.MotivoDeConsulta",
"pk": 11,
"fields": {
"nombre": "Otros"
}
  #2 (permalink)  
Antiguo 06/02/2014, 20:41
 
Fecha de Ingreso: enero-2012
Ubicación: Buenos Aires
Mensajes: 745
Antigüedad: 12 años, 3 meses
Puntos: 35
Respuesta: Problemas con widgets

No entiendo, qué framework estás usando? Hablas de programación web o de escritorio?
  #3 (permalink)  
Antiguo 07/02/2014, 08:28
 
Fecha de Ingreso: febrero-2014
Mensajes: 7
Antigüedad: 10 años, 2 meses
Puntos: 0
Respuesta: Problemas con widgets

Estoy usando django y es para un sistema web
  #4 (permalink)  
Antiguo 08/02/2014, 17:05
 
Fecha de Ingreso: enero-2012
Ubicación: Buenos Aires
Mensajes: 745
Antigüedad: 12 años, 3 meses
Puntos: 35
Respuesta: Problemas con widgets

Realmente no se nada de Django pero eso de habilitar / deshabilitar una opción no sería mas eficiente hacerlo del lado del cliente usando Javascript?
  #5 (permalink)  
Antiguo 26/02/2014, 14:00
 
Fecha de Ingreso: febrero-2014
Mensajes: 7
Antigüedad: 10 años, 2 meses
Puntos: 0
Respuesta: Problemas con widgets

Hola, ya pude agregar la opcion "otros" en un checkbox, pero ahora aparece otro error es que cada vez que escribo algo en otros me aparece como un nuevo elemento checkbox. como podria solucionarlo.

# coding=utf-8

from __future__ import unicode_literals
from itertools import chain
from django.utils.encoding import force_text
from django.utils.html import format_html
from django.utils.safestring import mark_safe
from django.forms.widgets import CheckboxSelectMultiple
from django.forms.widgets import CheckboxInput, TextInput

class CheckboxSelectOther(CheckboxSelectMultiple):
def render(self, name, value, attrs=None, choices=()):
if value is None: value = []
has_id = attrs and 'id' in attrs
final_attrs = self.build_attrs(attrs, name=name)
output = ['<ul>']
# Normalize to strings
str_values = set([force_text(v) for v in value])
for i, (option_value, option_label) in enumerate(chain(self.choices, choices)):
# If an ID attribute was given, add a numeric index as a suffix,
# so that the checkboxes don't all have the same ID attribute.
if has_id:
final_attrs = dict(final_attrs, id='%s_%s' % (attrs['id'], i))
label_for = format_html(' for="{0}"', final_attrs['id'])
else:
label_for = ''

cb = CheckboxInput(final_attrs, check_test=lambda value: value in str_values)
option_value = force_text(option_value)
rendered_cb = cb.render(name, option_value)
option_label = force_text(option_label)
output.append(format_html('<li><label{0}>{1} {2}</label></li>',
label_for, rendered_cb, option_label))
label_for = ''
if has_id:
final_attrs = dict(final_attrs, id='%s_%s' % (attrs['id'], i))
label_for = format_html(' for="{0}"', final_attrs['id'])
output.append(self.crear_otro_texto(name, final_attrs, label_for, str_values))
output.append('</ul>')
return mark_safe('\n'.join(output))

def crear_otro_texto(self, name, final_attrs, label_for, str_values):
cb = CheckboxInput(final_attrs, check_test=lambda value: value in str_values)
option_value = force_text(-1)
rendered_cb = cb.render(name, option_value)
option_label = force_text("Otro")
tb = TextInput()
rendered_tb = tb.render(name + "-otro", "")
return format_html('<li><label{0}>{1} {2} {3}</label></li>', label_for, rendered_cb, option_label, rendered_tb)

def value_from_datadict(self, data, files, name):
values = super(CheckboxSelectOther, self).value_from_datadict(data, files, name)
if "-1" in values and (name + "-otro") in data:
indice = values.index('-1')
values[indice] = data[name + "-otro"]
return values

Etiquetas: field, widgets
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:03.