¿La validación del modelo de Django se maneja solo a través de los formularios API?

StackOverflow https://stackoverflow.com/questions/805047

  •  03-07-2019
  •  | 
  •  

Pregunta

¿Es esta la única forma de crear una validación de modelo personalizada? ¿Para hacerlo utilizando los formularios? ¿Qué sucede si deseo enviar datos a la base de datos por medios que no sean formularios?

¿Fue útil?

Solución

Actualmente, Django no proporciona ninguna validación a nivel de modelo (además de las básicas " NOT NULL " ;, " UNIQUE " y las validaciones de longitud). Esto está en la lista de TODO pero lo más probable es que no se ajuste a la próxima versión 1.1.

Puede realizar tareas relacionadas con la validación en el método save () de su modelo o usar la señal de before_save (la excepción en el controlador de señales hará que la transacción se revierta) .

Otros consejos

La validación del modelo estará disponible en breve en la versión 1.2 de Django. Está disponible en este momento si utiliza una comprobación de Django svn actual del tronco.

Varios métodos clean ya están disponibles. Consulte http://docs.djangoproject.com/en/dev/ref / models / instance / # id1 para detalles.

En general, debería poder manejar lo que quiera a través de tipos de campo y sus opciones o el meta del modelo opciones . También puede anular el método de guardado realizar la validación / saneamiento. Si eso no es suficiente, puede crear su propio tipo de campo .

El problema es que no hay un buen comportamiento esperado. ¿Qué debería pasar? ¿Debería surgir una excepción? Los campos son solo una abstracción en el nivel de la base de datos, por lo que no debería haber más información allí que lo que la base de datos necesita saber.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top