2009-06-20 8 views
4

Je me demandais si la page d'administration django peut être utilisée pour les utilisateurs externes.Django admin - restriction de l'accès par l'utilisateur

Disons que j'ai ces modèles:

class Publisher(models.Model): 
    admin_user = models.ForeignKey(Admin.User) 
    .. 

class Publication(models.Model): 
    publisher = models.ForeignKey(Publisher) 
    .. 

Je ne suis pas sûr de ce que admin_user serait - peut-être il pourrait être l'e-mail d'un utilisateur admin?

Quoi qu'il en soit. Est-il possible d'autoriser un utilisateur administrateur à ajouter/modifier/supprimer uniquement des publications dont l'éditeur est associé à cet utilisateur administrateur?

-Merci! -Chris

Répondre

15

Si vous avez besoin d'autorisations plus fines dans vos propres applications, il est à noter que l'application administrative de Django supporte cela, via les méthodes suivantes qui peuvent être surchargées sur les sous-classes de ModelAdmin. Notez que toutes ces méthodes reçoivent l'objet HttpRequest actuel comme argument, permettant une personnalisation en fonction de l'utilisateur authentifié spécifique:

  • queryset(self, request): doit retourner un QuerySet pour une utilisation dans la liste d'administration d'objets pour un modèle. Les objets non présents dans ce QuerySet ne seront pas affichés.
  • has_add_permission(self, request): Devrait renvoyer True si l'ajout d'un objet est autorisé, Faux dans le cas contraire.
  • has_change_permission(self, request, obj=None): Devrait renvoyer True si l'édition obj est autorisée, False dans le cas contraire. Si obj est None, doit renvoyer True ou False pour indiquer si l'édition d'objets de ce type est autorisée en général (par exemple si False sera interprété comme signifiant que l'utilisateur actuel n'est pas autorisé à modifier un objet de ce type).
  • has_delete_permission(self, request, obj=None): Devrait renvoyer True si la suppression d'obj est autorisée, Faux dans le cas contraire. Si obj est None, doit renvoyer True ou False pour indiquer si la suppression d'objets de ce type est autorisée en général (par exemple, si False sera interprété comme signifiant que l'utilisateur actuel n'est pas autorisé à supprimer un objet de ce type).

[django.com]

+0

+1 Je n'étais pas au courant de l'option queryset pour les listes d'administrateurs. – SingleNegationElimination

0

L'administrateur django peut, dans une certaine mesure, être restreint. Pour un utilisateur donné, d'abord, ils doivent avoir des droits d'administrateur pour se connecter au site d'administration. Toute personne possédant cet ensemble d'indicateurs peut voir toutes les pages d'administration. Si vous voulez restreindre le visionnage, vous n'avez pas de chance, car ce n'est tout simplement pas implémenté. À partir de là, chaque utilisateur dispose d'une foule d'autorisations, pour créer, mettre à jour et supprimer, pour chaque modèle dans le site d'administration. Le moyen le plus pratique de gérer cela est de créer des groupes, puis d'attribuer des autorisations aux groupes.

1

Je vois la réponse de Chris a été utile à la question était posée de temps. Mais maintenant il est presque 2016 et je suppose qu'il devient plus facile d'activer l'accès restreint de Django Admin panel à l'utilisateur final.

système d'authentification Django fournit:

Groupes: Une façon générique d'appliquer des étiquettes et des autorisations à plus d'un utilisateur.

Où on peut ajouter des permissions spécifiques et appliquer ce groupe à l'utilisateur via un panneau d'administration ou avec des codes d'écriture.Après l'ajout d'utilisateur à ces groupes spécifiques, Admin doit activer le drapeau is_staff pour ces utilisateurs.

L'utilisateur pourra accéder aux modèles enregistrés restreints dans admin. J'espère que cela aide.

Questions connexes