Y a-t-il un moyen de supprimer la fonctionnalité "Ajouter" sur le site d'administration Django? Pour certaines entités, je veux seulement que l'administrateur Django puisse les voir ou les modifier, mais ne pas ajouter de nouvelles. P>
6 Réponses :
Bien sûr, vous pouvez personnaliser l'administrateur très granulariquement en suivant les instructions ici < / a> - Je crois que ce que vous voulez peut être obtenu en partie en remplacement modeladmin.save_model (auto, demande, obj, formulaire, modifier) code> dans votre propre modeladmin code> Sous-classe, pour s'assurer que rien ne se passe sur le magasin lorsque modifier code> est false (c'est-à-dire une tentative d'ajouter plutôt que de modifier), et en partie en remplacement modeladmin.add_view (auto, demande, form_url = ' ', extra_context = aucun) code> Pour afficher une "vue Ajouter" qui le rend très clair pour l'administrateur qu'ils ne seront pas autorisés à ajouter de l'objet à travers cet itinéraire. Je n'ai pas réellement effectué la personnalisation d'administration spécifique dont vous avez besoin, mais j'ai fait d'autres personnes et elles semblent fonctionner assez bien! P>
Merci pour la réponse. J'espérais un cadre qui l'accomplirait, la manière dont la propriété Save_as Modeladmins fonctionne.
Je ne suis pas au courant de tels paramètres en stock Django 1.0, mais il y a peut-être que certains> 1,0 et / ou contribuent-ils à l'approvisionner - Stock 1.0.Quelque chose est ce que j'ai coincé avec jusqu'à présent (surtout parce qu'il fonctionne bien sur l'application moteur, j'avoue ;-).
Cette réponse surcharge des choses. Supprimer les utilisateurs Ajout de la permission fait parfaitement l'affaire pour la situation que vous avez décrite. (Cela suppose que vous n'avez besoin que de le contrôler par modèle et non par exemple.)
@andibak, l'administrateur peut normalement modifier les utilisateurs, et il peut donc notamment modifier les autorisations, y compris les leurs. Quel est votre plan pour faire face à cela, sans sous-classement Modeladmin et donc essentiellement égal aux complications de ce que vous revendiquez est ma réponse surchargée? -)
@KRYS: Pourriez-vous préciser si les utilisateurs en question pourraient potentiellement avoir besoin d'administrer également les autorisations de l'utilisateur? Ceci est pour la postérité: votre question initiale a déjà été répondue par @Alex, mais d'autres peuvent rencontrer cette question et obtenir des conseils de votre réponse. Merci!
@Alex Martelli Nous comprenons une compréhension différente de la question initiale. Je n'ai pas interprimé que la référence à «l'administrateur Django» comme signifiant un superutilisateur spécifique.
Vous pouvez personnaliser l'autorisation pour chaque groupe d'utilisateurs à partir de l'interface d'administration: essayez d'aller à Ce ne sera pas aussi granuleux que la solution offerte par la réponse antérieure, mais elle s'occupera de la plupart de vos besoins sans avoir à personnaliser l'administrateur. P> / admin / auth / groupe code> et il doit être simple à partir de là. P>
Mais comme l'OP veut spécifiquement bloquer l'administrateur i> de faire certaines choses, comme la question énonce si clairement, comment va-t-il bloquer l'administrateur de simplement annuler les changements d'autorisation (en particulier s'il veut permettre à l'administrateur de faire un peu d'administration ;-)?
@ALEX: Ceci est vrai - je voulais dire ma réponse comme une alternative plus simple à votre réponse, mais la simplicité vient avec des limites bien sûr.
Si vous modifiez les autorisations pour restreindre l'accès, vous obtiendrez toujours le signe plus par un champ FK / MTM. En cliquant sur cela ouvrira une fenêtre contextuelle avec la «permission refusée». P>
Vous pouvez en réalité supprimer complètement le signe plus en ne pas simplement enregistrer le modèle avec l'administrateur. P>
J'ai une situation où j'ai des catégories prédéfinies que je veux que les utilisateurs puissent sélectionner plus d'une des. La meilleure façon de faire est avec un champ de modèle.ManyTomanany. Vous pouvez enregistrer le modèle avec l'administrateur, entrer les données selon les besoins, puis supprimer l'enregistrement. P>
voir: Django Admin - Désactiver le 'Ajouter 'Action pour un modèle spécifique pour une solution vraie. P>
Un moyen efficace facile est de définir max_num = 0 code> pour cette en ligne particulière. P>
La suggestion de Satya de réglage max_num = 0 fonctionne parfaitement. p>
par les documents Django sur la classe Modelform: p>
Pour les utilisateurs avec des navigateurs compatibles JavaScript, un lien "Ajouter un autre" est fourni pour permettre à n'importe quel nombre d'inlines supplémentaires à ajouter en plus de celles fournies à la suite de l'argument supplémentaire. P>
La liaison dynamique n'apparaîtra pas si le nombre de formulaires actuellement affichés dépasse max_num ou si l'utilisateur n'a pas activé JavaScript. P> blockQuote>
et p>
Comme avec des constructeurs régulières, vous pouvez utiliser le max_num et les paramètres supplémentaires sur Modelformset_Factory pour limiter le nombre de formulaires supplémentaires affichés. P>
max_num n'empêche pas les objets existants d'être affichés p> blockQuote>