web-dev-qa-db-fra.com

Django. Vous n'êtes pas autorisé à modifier quoi que ce soit

J'ai créé une petite application il y a quelque temps. J'ai créé admin.py et utilisé admin.site.register(MenuEntry) pour ajouter la classe à la console d'administration. Cela montrait très bien les articles de cette classe. Ensuite, j'ai commencé à travailler sur une autre application et j'ai tout créé comme avant. Mais maintenant, il dit: Vous n'avez pas la permission de modifier quoi que ce soit. J'ai comparé les fichiers de cela et de ces applications et ils ont l'air assez similaires, donc je ne trouve pas la différence et je peux ' Je ne sais pas quoi faire maintenant pour le faire fonctionner.

64
Sergei Basharov

J'ai vérifié les fichiers une fois de plus et j'ai trouvé la différence. J'ai oublié d'ajouter admin.autodiscover() dans urls.py du projet. Merci.

137
Sergei Basharov

J'ai eu un autre cas où cela s'est produit. J'avais une application appelée "transcription", avec deux modèles: Project et Recording. Après l'avoir principalement développé, j'ai décidé de renommer l'application "enregistrements". L'application d'administration a bien fonctionné en tant qu'administrateur, mais tout utilisateur non administrateur a reçu ce message d'erreur. Finalement, j'ai trouvé (dans ma base de données sqlite) la table Django_content_type. Il avait ces enregistrements:

 id nom modèle app_label 
 ------------------------------------ - 
 8 projet de transcription projet 
 9 enregistrement de transcription enregistrement 
 10 projet d'enregistrement projet 
 11 enregistrements d'enregistrement enregistrement 

Quelque part en cours de route, j'avais réussi à ajouter deux (presque - je ne sais pas pourquoi "enregistrer" dans l'enregistrement 10) des enregistrements corrects tout en laissant intacts les enregistrements désormais incorrects. L'utilisateur administrateur a très bien fonctionné (je me demande pourquoi), mais tout autre groupe a eu l'erreur. Quand j'ai regardé auth_group_permissions, j'ai vu que seuls les enregistrements 8 et 9 étaient assignés et bien sûr il n'y avait plus d'application appelée "transcription". D'où l'erreur.

J'ai supprimé les enregistrements 10 et 11 et changé les app_labels de 8 et 9 en "enregistrements" et il y a de la joie à Mudville.

2
Joe Gillon

Mettez à niveau votre Django vers 1.7 ou plus, ce problème sera automatiquement résolu.

Mise à niveau de Django:

pip install -U Django
1
Naresh

Je recevais la même erreur et j'ai dû refactoriser le appname car il entrait en conflit avec l'un des modules utilisés. Ma app's le nom était admin et j'utilisais également admin de Django.

Vérifiez le lien - Changer le nom de l'application , sur la façon de le faire.

0
Vaulstein