0
votes

Erreur lors de la mise à jour du groupe d'utilisateurs à Django?

Ici, j'essaie d'ajouter / mettre à jour le nom de groupe et les autorisations de l'utilisateur et j'ai essayé comme ça.

Pour ajouter ça fonctionne bien, mais lors de la mise à jour avec la fonction EDIT_USER_GROUP CODE> J'ai eu un problème. Le problème est p>

Type d'exception: Valeur d'exception IntegrityError: (1062, "Dupliquer Entrée 'développeur' pour clé 'nom' ") p> BlockQuote>

Je pense que cela est dû à la relation OneOne. Comment puis-je mettre à jour le groupe d'utilisateurs ici? P>

vues.py p> xxx pré>

formes.py p> xxx pré>

Modèle pour le groupe d'édition p> xxx pré>

EDIT: strong> Comme @ Shashank a suggéré Tout en essayant d'obtenir un objet modèle renvoyé, mais dit p> xxx pré>

et lors de l'utilisation du filtre, il est renvoyé au lieu de l'instance, il lance p>

Exception Value:    
'int' object has no attribute 'permissions'

group = Group.objects.filter(pk=pk).update(name=name)


2 commentaires

Je suppose que vous devez d'abord filtrer l'objet modèle, puis mettre à jour sa valeur, comme myModel.ObjectS.filter (pk = pk) .UPDate (val = val)


Groupe.Perrissions.set (Autorisations) Cette ligne vous donne une erreur car la méthode de mise à jour peut être renvoyée int , pouvez-vous essayer de diviser des éléments tels que groupe = mymodel. objets.filter (pk = pk) de sorte que vous puissiez obtenir cet objet filtré, puis group.update , puis modifier la permission. Assurez-vous que l'objet de groupe n'est pas une liste (comme après filtre DO Group = Group [0] )


3 Réponses :


2
votes

Cette ligne que vous avez écrite est la mise à jour de chaque groupe - group = group.Object.update (nom = nom) et quand il essaie de ne pas fonctionner à cause de la contrainte unique sur le nom.

Que diriez-vous de remplacer par groupe.name = nom , group.save ()


0 commentaires

2
votes

L'exception d'intégrité vous dit essentiellement que quelque part dans votre code, vous essayez de définir le nom pour différents objets de groupe dans "développeur" qui est interdit (en raison de la contrainte unique).

Dans votre fonction DEF EDIT_USER_GROUP (Demande, PK) , au lieu de group.Object.update , vous devez faire group.Object.get (nom = nom) < / code>

IE De xxx

à xxx


0 commentaires

2
votes

Votre intention n'est pas totalement claire - voulez-vous (aussi) modifier le nom du groupe ou simplement modifier les autorisations (et utiliser update () code> au lieu de `get ()` `était juste un TYPO)?

Dans le premier cas, vous voulez: p> xxx pré>

mais strong> car il existe une contrainte unique sur GROUP.NAME , vous devez aussi valider cela avant d'économiser. p>

Dans le second cas, vous avez bien sûr besoin de p>

group = Group.objects.get(name=name)
group.permissions.set(permissions)


0 commentaires