Django Admin - Désactiver le 'Ajouter' 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?
- FYI: "actions" dans django admin sont la liste déroulante qui s'applique dans les modifications en vue de tout coché les lignes dans la liste.
- Liée (mais différentes) question: stackoverflow.com/questions/1721037/...
Vous devez vous connecter pour publier un commentaire.
C'est facile, il suffit de surcharge
has_add_permission
méthode dans votreAdmin
classe comme ceci:admin.site.register(MyModel, MyModelAdmin)
Ajouter le tout dans laadmin.py
des modèles de l'application du dossier.obj
paramètre.Par défaut syncdb crée 3 les autorisations de sécurité pour chaque modèle:
Si votre connecté en tant qu'Administrateur, vous obtenez TOUT 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.
Je pense que cela va vous aider..
ci-dessous le code doit être dans admin.py fichier
C'est un trop de retard de réponse; il suffit de poster ce que si quelqu'un est de trouver la même solution.
Dans admin.py fichier vous pouvez effectuer les opérations suivantes:
Ici, "readonly_fields" la magie. Merci.