J'utilise un ManyToManyField
pour un access_list sur mon site:Django gestion d'une liste d'accès utilisateur avec le champ ManyToMany
class Projects(models.Model):
access_list = models.ManyToManyField(User)
et dans mon Views.py je sauve l'utilisateur qui a créé le projet dans le access_list
, puis j'affiche les utilisateurs dans le access_list
sur la page access_update.html
, où un utilisateur peut ajouter un autre nom à soumettre au access_list
, permettant plus de collaborateurs. Il y a aussi un bouton Supprimer un utilisateur afin que vous puissiez supprimer des utilisateurs du access_list
. Ma grande préoccupation cependant est que maintenant, si un utilisateur est sur le access_list
, ils pourraient entrer et supprimer le créateur original du access_list
et leur refuser l'accès au projet.
Je voulais avoir un created_by = models.ForeignKey(User)
comme sauvegarde, de sorte que ma permission serait fondée sur created_by
OU access_list
, mais en essayant d'avoir un ForeignKey(User)
et un ManyToManyField(User)
ne validera pas le modèle.
Existe-t-il un meilleur moyen d'empêcher l'utilisateur qui a créé le projet d'être démarré de la liste, tout en permettant aux utilisateurs d'avoir la possibilité de supprimer leur liste de collaborateurs?
Mon ManyToManyField valide maintenant, que l'installation fonctionne, le problème est plus que tout utilisateur dans le ManyToManyField peut supprimer tout autre utilisateur du ManyToManyField , y compris eux-mêmes, et qu'est-ce que je voudrais empêcher. un "created_by = Models.ForeignKey (User)" aiderait parce que je pourrais définir l'autorisation à access_list * ou * created_by, mais je ne peux pas avoir un ForeignKey (User) et un ManyToManyField (User) dans le même modèle. –
Donc ce que vous voudriez, c'est masquer 'access_list' sur la vue de modification et les empêcher d'enregistrer sur le modèle? –
Je souhaite que les personnes figurant dans access_list puissent ajouter ou supprimer des utilisateurs de la liste access_list, mais je souhaite la protection de la personne qui a créé le projet afin qu'une personne malveillante sur access_list ne puisse pas retirer tout le monde de access_list désactiver le projet entier. À l'heure actuelle, si vous créez un nouveau projet, vous êtes enregistré dans la liste access_list et vous pouvez y ajouter d'autres utilisateurs. Mais un autre utilisateur de cette liste peut supprimer l'utilisateur d'origine. Je voudrais un moyen de prévenir cela –