Partiremos de un estado en el que ya se tienen creados los modelos, que serán: ModelA, ModelB, y ModelC. Vamos a utilizar las vistas basadas deb clases de ‘django.views.generic’. Y suponemos que ya tenemos hecha la plantilla base de nuestra aplicación.
En este post podrás leer
Preparación de los modelos
Una vez que tenemos nuestros definidos nuestros modelos tenemos que darle una funcionalidad extra.
Obtener los nombres de los campos que vamos a mostrar en los listados. Normalmente en los listados de objetos vemos sólo una serie de campos, no todos. Vamos a ver un ejemplo. Como se puede ver se trada de un método estático, ya que pertenecerá al modelo y no a una instancia de este.
Obtener los datos para cada objeto que vamos a mostrar. Lo ideal es que se correspondan con los campos que hemos puesto en el método anterior.
Obtener las URLs que vamos a necesitar para nuestro CRUD. La obtenciñon de la URL de Create y List, serán métodos estáticos ya que no dependen de ninguna instancia.
Obtener el nombre del modelo para saber sobre qué modelo estamos aplicando la vista.
Obtener todos los atributos y su valor de un objeto
Ya tenemos unos modelos que son capaces de proporcionarnos toda la información que necesitamos para crear el CRUD
Create
Para casi cualquier vista de creación lo que necesitamos es una plantilla para pintar el formulario. En este caso vamos a usar una muy sencilla pero que va a servir para todos los modelos. Suponemos que en la plantilla de la que herede esta plantilla, tendremos un bloque para el contenido, que en este caso será el formulario. Esta plantilla la meteremos en algún sitio al que puedan acceder todas las aplicaciones en ‘templates/generic/form.html’.
Y ahora vamos a hacer una vista que herede de CreateView.
Le decimos que use la plantilla del formulario anterior. En title ponemos el nombre que le hemos dado a la clase. y en el formulario le añadimos los botones de aceptar y cancelar. Este último nos llevará otra vez a la lista de todos los objetos.
Por último asignaremos la URLS. En el ejemplo veremos como usar esta vista para todos nuestros modelos.
Remove
Esta vista la vamos a usar desde la lista de objetos, por lo que no usaremos una plantilla intermedia para pedir la confirmación para eliminar el objeto. La idea es que se puedan acceder a todas las acciones de una forma rápida en la lista de objetos.
Como no tenemos formulario intermedio lo que hacemos es directamente pasar los mismos parámetros del get al post para que se elimine el objeto.
Y aquí las URLs.
Update
La vista de Update va a compartir el mismo formulario que la de create, por lo que no vamos a hacer otra plantilla nueva. Y va a ser prácticamente igual que la de create, sólo que en este caso vamos a heredar de UpdateView. Se podría hacer en una única clase, pero el update suele ser más complejo y se podrían tener que cambiar relaciones y otros elementos, por lo que así se consigue más libertad.
Y las URLs.
Detail
La vista de detalle es muy sencilla y muy clara. Lo que vamos a hacer es mostrar los campos con sus respectivos valores. A partir de aquí se puede hacer que la vista sea más atractiva, ya que en este caso no va a tener nada de funcionalidad. Volvemos a crear una plantilla que sea accesible desde todas las aplicaciones, por ejemplo en ‘templates/generic/detail.html’.
Esta plantilla la rellenaremos desde la siguiente vista:
Y ahora sólo nos queda añadir las URLs.
List
Por último vamos a agrupar toda la funcionalidad anterior en un vista de lista desde donde podremos administrar todos los objetos. Creamos una plantilla, por ejemplo ‘templates/generic/list.html’.
Y para generar los datos necesarios:
Ya sólo nos falta añadir las URLs y podremos administrar todos nuestros objetos de una forma sencilla, eficaz e intuitiva para los usuarios de nuestra aplicación.
Y aquí termina esta entrada. Esperamos que sea de utilidad. Y si tenéis alguna duda, estamos disponibles para aclararlas.
0 comentarios