Django: la mejor práctica para implementar CRUD fuera de contrib.admin
-
22-07-2019 - |
Pregunta
Actualmente estoy desarrollando un proyecto de Blog usando el modelo Post, que será utilizado por varios autores.
Quiero crear una interfaz de administrador / panel de control donde cada autor de la publicación pueda ver la lista de publicaciones que creó el autor (para que no vea la publicación creada por los otros autores), editar y eliminar múltiples ellos.
¿Caso de uso válido para el administrador de django? dijo que:
el administrador de Django no es adecuado para perfiles de usuario individuales, cada usuario sería capaz de ver y editar todos otros perfiles de usuario Esto es adecuado más a un administrador que tiene que administrar todos los usuarios a la vez.
Eso significa que se debe crear un nuevo sistema CRUD, fuera de la interfaz contrib.admin. Entonces la pregunta es, ¿hay alguna técnica / forma existente para implementar el CRUD fuera del sistema contrib.admin? o, ¿qué necesito para estudiar / usar? ¿Cómo puedo implementarlo bien (el mínimo esfuerzo)?
Gracias de antemano :)
Solución
Esto es bastante fácil de hacer ajustando el administrador de Django. Si esta es la única razón para abandonar contrib.admin, es posible que desee buscar en Google algunos artículos recientes sobre la personalización del administrador antes de continuar y tirar al bebé con el agua del baño.
Encontré algunos candidatos probables:
- http://patrickbeeson.com / blog / 2008 / ago / 11 / how-create-user-specific-admin-Django /
- http://www.djangosnippets.org/snippets/1054/
y en general: http: // www. ibm.com/developerworks/opensource/library/os-django-admin/index.html
(tenga en cuenta que había una técnica antigua que utilizaba un hack local de subprocesos. Esto ya no es necesario ya que hay mejores formas de hacerlo. Una mención de esto es una señal segura de que el artículo está desactualizado).
Otros consejos
Querrá ver el formularios genéricos de creación / actualización de Django . No es el administrador, pero es bastante fácil de implementar.
Verifique esta aplicación: https://github.com/05bit/django-smarter .
Todavía no está bien documentado, pero ya lo he usado en un par de proyectos.
En Django 1.3, las "vistas genéricas" (Formularios CRUD) han cambiado para ser basados ??en la clase. Consulte aquí .