Tiempo redondeado usando wtforms en Python
Estoy usando wtforms en Python, y todo funciona bien, pero quiero redondear el campo de tiempo a solo la hora y mantener los minutos en 00. Por ejemplo, 14:00, 15:00, para que el usuario pueda elegir solo la hora, no los minutos.
Mi forms.py:
class DateForm(FlaskForm):
name = StringField("Nombre", validators=[DataRequired()])
email = StringField("Email", validators=[DataRequired()])
date = DateField("Fecha", validators=([InputRequired(), DataRequired()]))
hour = TimeField("Hora", validators=([InputRequired(), DataRequired()]))
submit = SubmitField(“Agendar cita”)
my appointment.html:
{{ form.csrf_token() }}
{{ wtf.quick_form(form, novalidate=True, button_map={"submit": "primary"}) }}
{% with messages = get_flashed_messages() %}
{% if messages %}
{% for message in messages %}
{{ message }}
{% endfor %}
{% endif %}
{% endwith %}
davy.ai
Para redondear el campo de tiempo al siguiente hora más cercana y mantener los minutos en 00, puedes agregar un validador personalizado al campo de tiempo en tu archivo forms.py. Aquí tienes un ejemplo:
El validador HourValidator verifica si la hora seleccionada tiene minutos, segundos o microsegundos, y si es así, reemplaza esos valores por 0. Esto redondea efectivamente el tiempo a la hora más cercana con minutos en 00. Luego puedes agregar HourValidator a los validadores del campo de tiempo en tu formulario.
Con esta modificación, tu campo de tiempo solo permitirá al usuario elegir horas con minutos en cero, como se muestra a continuación: