Pregunta

    

Esta pregunta ya tiene una respuesta aquí:

         

¿Hay alguna forma de eliminar el " Agregar " funcionalidad en el sitio de administración de Django? Para ciertas entidades, solo quiero que el administrador de Django pueda verlas o cambiar las existentes, pero no agregar nuevas.

¿Fue útil?

Solución

Claro, puede personalizar el administrador MUY detalladamente siguiendo las instrucciones aquí - Creo que lo que quieres se puede obtener en parte al anular ModelAdmin.save_model (self, request, obj, form, change) en tu propio ModelAdmin subclase, para garantizar que no ocurra nada en la tienda cuando change es falso (es decir, un intento de agregar en lugar de cambiar), y en parte al anular ModelAdmin.add_view (self, request, form_url = ' ', extra_context = None) para mostrar una " agregar vista " eso deja muy claro al administrador que NO se les permitirá agregar objetos a través de esta ruta. En realidad, no he hecho la personalización de administrador específica que necesita, ¡pero he hecho otras y parecen funcionar bastante bien!

Otros consejos

Puede personalizar el permiso para cada grupo de usuarios desde la interfaz de administración: intente ir a / admin / auth / group y debería ser sencillo desde allí.

Esto no será tan detallado como la solución ofrecida por la respuesta anterior, pero se encargará de la mayoría de sus necesidades sin necesidad de personalizar el administrador.

Si cambia los permisos para restringir el acceso, seguirá obteniendo el signo más con un campo FK / MtM. Al hacer clic en eso, se abrirá una ventana emergente con 'Permiso denegado'.

En realidad, puede eliminar completamente el signo más no simplemente no registrando el modelo con el administrador.

Tengo una situación en la que tengo categorías predefinidas que quiero que los usuarios puedan seleccionar más de una. La mejor manera de hacer esto es con un campo model.ManyToMany. Puede registrar el modelo con el administrador, ingresar los datos según sea necesario y luego eliminar el registro.

Una manera fácil y efectiva es establecer max_num = 0 para esa línea particular.

La sugerencia de Satya de establecer max_num = 0 funciona perfectamente.

Según los documentos de Django en la clase ModelForm:

  

Para usuarios con navegadores habilitados para JavaScript, un " Agregar otro " se proporciona un enlace para permitir que se agregue cualquier número de líneas adicionales además de las proporcionadas como resultado del argumento adicional.

     

El enlace dinámico no aparecerá si el número de formularios mostrados actualmente excede max_num, o si el usuario no tiene habilitado JavaScript.

y

  

Al igual que con los conjuntos de formularios normales, puede usar max_num y parámetros adicionales para modelformset_factory para limitar el número de formularios adicionales que se muestran.

     

max_num no impide que se muestren objetos existentes

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