J'ai récemment tenté de charger des appareils dans ma base de données. Lorsque j'exécute le serveur et chargez diverses pages, cependant, j'obtiens l'erreur suivante:
Caught DoesNotExist while rendering: ContentType matching query does not exist.
7 Réponses :
Si vous regardez à l'intérieur du luminaire, chaque appareil dispose de trois champs racine: le PK, les champs C'est cet appname.ModelName que Django regarde, via le moteur de contenuType, pour déterminer quel tableau pour mettre vos données. P>
Votre ami vous a donné au moins un appareil dans lequel le contenu du modèle code> modèle code> ne correspond à aucun modèle réel de votre base de données. Cela peut être un mal orthographique, un malentendu, un changement de modèle ou de nom d'application ou de tout nombre de défauts. Mais le luminaire ne correspond à aucun modèle de votre projet et l'importateur de luminaire vous en dit de sorte que, en disant qu'il ne peut pas correspondre au nom désigné du modèle avec aucun nom de la table de contenu de projets. P>
Le correctif peut être aussi simple que de déterminer ce que le tableau est censé avoir en tant que contenuType, puis d'ouvrir le luminaire et d'effectuer une recherche de masse-et-remplacer sur le modèle EDIT: P>
Ceci est une longue (longue!) en retard. Si vous êtes sur le point de code> (qui est un ensemble de champs pour l'entrée PK'TH dans ce tableau) et un < Code> Modèle CODE>, qui contient l'appName.ModelName, à partir duquel l'ORM dérive les informations de la table. P>
Modèle: CODE> LIGNE. p>
Dumpdata code> contenant des données génériques ou des références aux tables génériques ailleurs, vous devez em> (je ne peux vraiment pas souligner à quel point vous devez EM>) Apprenez le
Dumpdata --Natural code> drapeau. Plutôt que d'enregistrer des informations sur le contenu de contenu par numéro, il l'enregistrera par nom, ce qui facilite la recharge de la base de données de loin et moins d'erreur. p>
Depuis Django 1.7, le drapeau - naturel code> a été obsolète. Au lieu de cela, vous pouvez utiliser
- naturel-étranger code>
J'ai utilisé ceci: python gérer.py buppdata --Naturel-étranger - Natural-Primary -e TentresTypes -E Auth.Permission> DataDump_2.json. Je reçois toujours l'erreur: la requête correspondante du contenu n'existe pas .: (auth.group:pk=none) field_value était '[u'add_answer', u'evaluator ', u'answer'] '
Vous pouvez vérifier manuellement chaque table de contenu de contenu dans votre DB ou: p>
ou vous pouvez utiliser l'un des outils de migration Django: P>
L'accessible Django-Evolution p> li>
ou plus complexe sud p> li> ul>
J'ai trouvé une cause différente de cette erreur, je voulais ajouter au cas où cela aide toute autre chose. Ce qui faisait cette question pour moi, c'est que j'avais créé un groupe avec des autorisations spécifiques, puis désinstallé une application qui a été référencée dans le groupe.
Plus précisément, j'avais installé la réversion à un point et j'ai créé un groupe appelé "Editeur de site" qui a donné une autorisation d'utilisateur à créer, modifier et supprimer des révisions. Plus tard, je suis une révision non installée, mais les autorisations de groupe sont restées lorsque j'ai exécuté la commande "Dumpdata": P>
[ { "fields": { "name": "Site Editor", "permissions": [ [ "add_logentry", "admin", "logentry" ], [ "change_logentry", "admin", "logentry" ], [ "delete_logentry", "admin", "logentry" ], [ "add_group", "auth", "group" ], [ "change_group", "auth", "group" ], [ "delete_group", "auth", "group" ], [ "add_session", "sessions", "session" ], [ "change_session", "sessions", "session" ], [ "delete_session", "sessions", "session" ], [ "add_site", "sites", "site" ], [ "change_site", "sites", "site" ], [ "delete_site", "sites", "site" ] ] }, "model": "auth.group", "pk": 2 }]
de Django 1.7, les options de Dumpdata ont changé: Voir http://polarhome.com:753/doc /pyptHon-django-doc/html/topics/serialization.html
Vous avez donc une utilisation: p> alternativement, on peut également résoudre la cause fondamentale : Assurez-vous que les types de contenu correspondent aux bases de données source et destination. Je suis confronté à la même erreur de déplacement des données entre les bases de données où DB1 avait toujours des types de contenu des applications qui avaient été supprimées en moyenne. Importation de ceux-ci dans DB2 où les applications n'ont jamais été présentes sur ce message d'erreur. P> Dans ce cas, Editez le niveau de base de données - la table DJANGO_Content_Type dans DB1 et supprimez les types de contenu qui ne sont plus utilisés dans l'application Django.
Ensuite, migrez ou copiez les données sur DB2 à nouveau. P> Si les types de contenu sont référencés dans d'autres tables, vous devrez peut-être les supprimer en premier ou utiliser une commande DROP CASCADE (Risky!). P > AVERTISSEMENT: l'édition au niveau de la base de données est une entreprise risquée, assurez-vous donc de prendre une sauvegarde avant de vous engager et de ne pas le faire sur des bases de données de production. P> Selon le type de base de données, vous Besoin d'un outil différent pour faire la modification. P> mysql -> [MySQLWorkBench][1]
postgres -> [pgAdmin][2]
SQLite -> [SQLite Browser][3]
Dans certains cas, cette erreur est provoquée lorsque votre appareil contient des références à un modèle qui n'existe pas, que cela n'a pas été installé ou son application n'a pas été ajoutée à votre installation installée. Malheureusement, le message d'erreur de Django est assez inutile lors de la suivi de cela.
Si vous modifiez la méthode Ensuite, vous pouvez vérifier que ce modèle / application est installé ou supprimé ces enregistrements de votre appareil. P> p> QuerySet.get Code> dans
Django / dB / modèles / Query.py code> Pour imprimer Out le
* args code> et
** kwargs code> passés, vous obtiendrez un message d'erreur plus utile comme: p>
Avez-vous récemment changé pour utiliser Lorsque vous interrogeez le contenu Ceci échoue car dans postgres code> à partir de
mysql code>?
contenttypes code> avec quelque chose comme: p> < Pré> xxx pré>
postgres code>;
app_label code> et
modèle code> sont tous des champs minuscules. Ainsi utilisez le
__ iexact code> recherche sur le terrain qui ignore le cas. P>
C'est ce qui a fonctionné pour moi après beaucoup d'essais. J'avais beaucoup de problèmes avec des groupes et des journaux. P>
pendant que sur SQLLITE, START SERVER, allez à l'administrateur et supprimez tous les groupes. Ensuite, tapez les éléments suivants en shell: p>
python gérer.py buppdata --Naturel-étranger --Naturel -Autural -e -e
contenttypes -e auth.permission -e admin.logentry> datadump_3pson strong> p> li>
Modifier les paramètres sur MySQL dans Paramètres.py strong> P> LI>
python manage.py loaddata datadump_3.json p> li>
ul>