Tengo un selector de rango de fechas en mi sitio web.
Cuando un usuario ingresa el rango de fecha y hora, quiero enviar por separado dentro del formulario la fecha de startDate y la fecha de endDate
código selector de rango de fechas:
$('input[name="datetimes"]').daterangepicker({ timePicker: true, timePickerIncrement: 5, startDate: moment().startOf('hour'), endDate: moment().startOf('hour').add(32, 'hour'), locale: { format: 'YYYY-MM-DD hh:mm' }, opens: 'center', drops: 'auto' });Y esto es lo que probé:
$('#formid').submit(function(e) { e.preventDefault(); let startDate = ($('#datetimes').data('daterangepicker').startDate).format('YYYY-MM-DD hh:mm'); let endDate = ($('#datetimes').data('daterangepicker').endDate).format('YYYY-MM-DD hh:mm'); $(this).append('<input type="hidden" name="start_date" value='+startDate+' /> '); $(this).append('<input type="hidden" name="end_date" value='+endDate+' /> '); this.submit(); }); Antes de this.submit(); Hice un console.log(startDate) y esto es lo que obtengo:
Obtengo la fecha y la hora (como se esperaba), pero luego, si intento hacer una print(request.POST) en la vista (back-end de Django), esto es lo que obtengo:
De alguna manera, durante el POST el HH:mm desapareció.
¿Cómo puedo mantener los valores de hh:mm durante el POST?
Actualizar:
views.py
def add_new_task(request): context = {} context['nbar'] = 'index' if request.method == 'POST': print(request.POST) return render(request, 'index.html', context) models.py
class ToDoList(models.Model): title = models.CharField(max_length=60) description = models.TextField() start_date = models.DateTimeField() end_date = models.DateTimeField() user = models.ForeignKey( User, null=True, blank=True, on_delete=models.SET_NULL, )Esta es una posibilidad remota, pero ¿es posible que el hecho de que le falten comillas dobles alrededor de los atributos de value en sus entradas ocultas sea lo que está causando el problema?
Intenta cambiarlo a:
$(this).append('<input type="hidden" name="start_date" value="'+startDate+'" /> '); $(this).append('<input type="hidden" name="end_date" value="'+endDate+'" /> ');