187 votes

Django Admin - désactiver le ' Add ' action pour un modèle spécifique

J'ai un site django avec beaucoup de modèles et de formes. J'ai beaucoup de formulaires personnalisés et les jeux de formulaires et inlineformsets et de validation personnalisé et personnalisé querysets. D'où l'ajout du modèle de l'action dépend des formes qui ont besoin d'autres choses, et le "ajouter un modèle" dans l'admin de django traversées de 500 à partir d'un personnalisé queryset.

Est-il de toute façon à désactiver le lien "Ajoutez $" MODÈLE de fonctionnalité pour un certains modèles?

Je veux /admin/appname/modelname/add/ pour donner un 404 (ou approprié "disparaître" message d'erreur), je ne veux pas "Ajouter $MODELNAME" pour être sur /admin/appname/modelname vue.

Django admin fournit un moyen pour désactiver admin actions (http://docs.djangoproject.com/en/dev/ref/contrib/admin/actions/#disabling-actions) toutefois, la seule action de ce modèle est "delete_selected'. c'est à dire l'admin actions d'agir uniquement sur les modèles existants. Est-il un django-esque façon de le faire?

422voto

Frost.baka Points 2173

C’est facile, juste surcharger has_add_permission méthode dans votre classe Admin comme suit :

10voto

Richard Cooke Points 28

Par défaut syncdb crée 3 les autorisations de sécurité pour chaque modèle:

  1. Créer (aka ajouter)
  2. Changement
  3. Supprimer

Si votre connecté en tant qu'Administrateur, vous obtenez TOUT ce n'importe quoi.

Mais si vous créez un nouveau groupe d'utilisateurs appelé "Accès Général" (par exemple) ensuite, vous pouvez affecter UNIQUEMENT les MODIFIER et de SUPPRIMER les autorisations pour tous vos modèles.

Puis tout utilisateur qui est un membre de ce groupe n'aura pas de "Créer" de l'autorisation, rien liée à celui-ci apparaîtra sur l'écran.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X