tengo este template renderizado con las bondaes de Django + jS+ Ajax + JQ El formulario cuenta con 9 campos, el primer campo es del tipo autocomplete, es decir me esta trayendo un campo del modelo RecepEQtaller, lo trae con èxito, automaticamente el procede a llenar con ese dato el siguiente texfield de abajo, todo con éxito, luego yo procedo a llenar manualmente los otros campos del formulario, una vez el formulario esta lleno le doy guardar y no sucede nada, no guarda el registro, porque sería que no funciona? Template generar_orden_trabajo : {% load static %}
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="https://code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
<link rel="stylesheet" href="{% static 'css/generar_orden_trabajo.css' %}" />
<title>Generar Orden de Trabajo</title>
</head>
<body>
<form method="post">
{% csrf_token %}
<!-- Buscador -->
<div class="form-group">
<label for="id_busqueda">Buscar Equipo:</label>
<input type="text" name="busqueda" id="id_busqueda" class="form-control">
</div>
<div class="form-group">
<label for="id_resultado">Datos del equipo:</label>
<input type="text" name="resultado" id="id_resultado" class="form-control" readonly>
</div>
<div class="form-group">
<label for="id_fecha_inicio_orden_trabajo">Fecha de Inicio de Orden de Trabajo:</label>
<input type="date" name="fecha_inicio_orden_trabajo" id="id_fecha_inicio_orden_trabajo" class="form-control">
</div>
<div class="form-group">
<label for="id_tecnico_encargado">Técnico Encargado:</label>
<input type="text" name="tecnico_encargado" id="id_tecnico_encargado" class="form-control">
</div>
<div class="form-group">
<label for="id_estatus">Estatus:</label>
<input type="text" name="estatus" id="id_estatus" class="form-control">
</div>
<div class="form-group">
<label for="id_diagnostico_emitido">Diagnóstico Emitido:</label>
<input type="text" name="diagnostico_emitido" id="id_diagnostico_emitido" class="form-control">
</div>
<div class="form-group">
<label for="id_orden_compra_sujeta">Orden de Compra Sujeta:</label>
<input type="text" name="orden_compra_sujeta" id="id_orden_compra_sujeta" class="form-control">
</div>
<div class="form-group">
<label for="id_consideraciones_adicionales">Consideraciones Adicionales:</label>
<textarea name="consideraciones_adicionales" id="id_consideraciones_adicionales" class="form-control"></textarea>
</div>
<div class="form-group">
<label for="id_fecha_salida_equipo">Fecha de Salida del Equipo:</label>
<input type="date" name="fecha_salida_equipo" id="id_fecha_salida_equipo" class="form-control">
</div>
<button type="submit" class="btn btn-primary">Guardar</button>
</form>
<script>
$(document).ready(function() {
$('#id_busqueda').autocomplete({
source: '{% url "buscar-equipo-autocompletado" %}',
minLength: 2,
select: function(event, ui) {
$('#id_resultado').val(ui.item.value + ' - ' + ui.item.tipo_EQ + ' - ' + ui.item.numero_serie);`introducir el código aquí`
}
});
});
</script>
</body>
</html>
Vista :
def generar_orden_de_trabajo(request):
mensaje = None
if request.method == 'POST':
form = OrdenTrabajoFclass(request.POST)
if form.is_valid():
form.save()
mensaje = "La orden de trabajo se ha generado correctamente."
else:
mensaje = "Error al procesar el formulario. Por favor, revise los datos ingresados."
else:
form = OrdenTrabajoFclass()
return render(request, 'generar_orden_trabajo.html', {'form': form, 'mensaje': mensaje})
Form :
from django import forms
from .models import Orden_de_trabajo, RecepEQtaller
class OrdenTrabajoFclass(forms.ModelForm):
class Meta:
model = Orden_de_trabajo
fields = '__all__' # Esto incluirá todos los campos del modelo en el formulario
def __init__(self, *args, **kwargs):
super(OrdenTrabajoFclass, self).__init__(*args, **kwargs)
# Agregar un atributo para el campo codigo_serie para personalizar su apariencia si es necesario
#self.fields['codigo_serie'].widget.attrs.update({'class': 'form-control', 'placeholder': 'Número de serie'})
# Personalizar el campo 'equipo' para mostrar una lista desplegable de equipos disponibles
# Aquí puedes agregar opciones adicionales según sea necesario, como filtrar los equipos por algún criterio
self.fields['equipo'].queryset = RecepEQtaller.objects.all()
self.fields['equipo'].widget.attrs.update({'class': 'form-control'})
Modelo donde se espera guardar el registro: class Orden_de_trabajo(models.Model):
nombre_cliente = models.CharField(max_length=100)
equipo = models.ForeignKey(RecepEQtaller, on_delete=models.CASCADE)
fecha_inicio_orden_trabajo = models.DateField(default=datetime.date.today)
tecnico_encargado = models.CharField(max_length=100)
estatus = models.CharField(max_length=100)
diagnostico_emitido = models.CharField(max_length=100)
orden_compra_sujeta = models.CharField(max_length=100)
consideraciones_adicionales = models.CharField(max_length=100)
fecha_salida_equipo = models.DateField(default=datetime.date.today)
def __str__(self):
return f"{self.equipo.tipo_EQ} - Cliente: {self.equipo.nombre} - {self.fecha_inicio_orden_trabajo}"
Pues probe cambiar la vista, agregar campos ocultos, renderizar el formulario de diferentes formas , cambiar el js y nada aun, no tengo soluciones.
action
de tuform
?