6
votes

Erreur moteur Django MongoDB lors de l'exécution de TellSiteID

J'ai donc créé un projet de Django et une application selon le tutoriel et j'ai toutes les dépendances nécessaires au moteur de MongoDB, tout semblait fonctionner bien et dandy jusqu'à ce que j'essaye d'activer l'interface administrative.

i décontracté les bits requis et a ajouté 'django_mongodb_engine' et 'djangotoolbox' à la section Apps dans Paramètres.py P>

Quand j'essaie d'entrer dans Localhost: 8000 / admin I Obtenez une erreur: p>

"autofield (Touche primaire par défaut) Les valeurs doivent être des chaînes représentant un objet d'un objet sur MongoDB (obtenu u'1 'à la place). Veuillez vous assurer que votre site_id contient une chaîne d'objectivation valide. " P>

Après que certains googling apparemment, je dois apparemment courir gérer.py tellsideid et cela me crachera une carte d'identité que je peux utiliser dans mes paramètres.py qui fera disparaître l'erreur, mais quand j'essaie d'exécuter Manook.py TellSiteID Je reçois: P>

Traceback (most recent call last):
File "./manage.py", line 14, in <module>
execute_manager(settings)
File "/Users/holografix/.virtualenvs/django_nonrel_env/lib/python2.7/site-   packages/django/core/management/__init__.py", line 438, in execute_manager    utility.execute()
File "/Users/holografix/.virtualenvs/django_nonrel_env/lib/python2.7/site-packages/django/core/management/__init__.py", line 379, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/Users/holografix/.virtualenvs/django_nonrel_env/lib/python2.7/site-packages/django/core/management/base.py", line 191, in run_from_argv
self.execute(*args, **options.__dict__)
File "/Users/holografix/.virtualenvs/django_nonrel_env/lib/python2.7/site-packages/django/core/management/base.py", line 220, in execute
output = self.handle(*args, **options)
File "/Users/holografix/.virtualenvs/django_nonrel_env/lib/python2.7/site-packages/django/core/management/base.py", line 351, in handle
return self.handle_noargs(**options)
File "/Users/holografix/.virtualenvs/django_nonrel_env/lib/python2.7/site-packages/django_mongodb_engine/management/commands/tellsiteid.py", line 8, in handle_noargs
site_id = self._get_site_id()
File "/Users/holografix/.virtualenvs/django_nonrel_env/lib/python2.7/site-packages/django_mongodb_engine/management/commands/tellsiteid.py", line 19, in _get_site_id
return Site.objects.get().id
File "/Users/holografix/.virtualenvs/django_nonrel_env/lib/python2.7/site-packages/django/db/models/manager.py", line 132, in get
return self.get_query_set().get(*args, **kwargs)
File "/Users/holografix/.virtualenvs/django_nonrel_env/lib/python2.7/site-packages/django/db/models/query.py", line 351, in get
% self.model._meta.object_name)
django.contrib.sites.models.DoesNotExist: Site matching query does not exist.


0 commentaires

9 Réponses :


3
votes

5
votes

Vous n'avez pas encore créé de site. Exécuter manage.py syncdb pour en créer un.


1 commentaires

Manage.py Syncdb soulève la même exception même après avoir laissé tomber la base de données et commencer fraîche. Cela a fonctionné pour moi: 1) Drop the Base de données 2) Créez un site Site Selon Stackoverflow.com/a/ 9780984/76900 3) Ajouter Site_ID à Paramètres 4) Exécutez Manage.py Syncdb



2
votes

Je l'ai couru pendant ma configuration l'autre jour.

Fondamentalement, vous devez logo dans une coquille Mongo et recherchez votre site de votre site, puis ajoutez-le de vos paramètres.py

Connectez-vous à une coquille Mongo < / p> xxx

Sélectionnez votre db xxx

puis faire une recherche () sur django_site xxx

ouvrir vos paramètres.pypy et éditer le site_id = "" Ligne (la mine est ci-dessous) xxx

qui devrait vous mettre en marche


0 commentaires

2
votes

Très probablement Vous n'avez pas encore créé un site, de le faire, vous devez donc exécuter la commande xxx pré>

ceci crée le site, vous devez maintenant ajouter son site_id dans votre fichier de paramètres. Allez obtenir l'ID de site, connectez-vous au moteur Mongodb qui fonctionne et exécutez les commandes suivantes p>

site_id = u'4f4e968adea3b3b30c00001d'


0 commentaires

0
votes

J'utilise manage.py syncdb , puis manage.py thotsideid mais affiche toujours une erreur.

Je le résolvez enfin en supprimant la base de données et synchronisez à nouveau.

J'espère que cela peut aider quelqu'un :)


0 commentaires

12
votes

Vous pouvez créer votre site, puis obtenir l'ID:

python ./manage.py tellsiteid


1 commentaires

Alors, que si nous avons accidentellement couru cela plus d'une fois, pouvez-vous l'effacer?



12
votes

Si vous n'avez pas besoin de la fonctionnalité CODE> SITES CODE> (qui est très probable) désactiver simplement django.contrib.sites code> application et il corrigera les problèmes de MongoDB liés au site_id :

INSTALLED_APPS = (   
    (...)
    # 'django.contrib.sites',  # Comment this out
    (...)
)


1 commentaires

Très utile pour moi aussi simple que cela semble! J'ai un gâchis avant ça! Merci beaucoup



3
votes

Pour une raison quelconque, aucune des solutions n'a fonctionné ici pour moi. Python ./Manage.py TellSiteID code>, il n'y avait pas de django_site code> collection et commentant 'django.contrib.sites' code> a causé des erreurs étranges. saisir l'identifiant de la coquille travaillée pour moi cependant, détaillé ici: p>

HTTPS : //gist.github.com/elshargef/2986459 ou ici La requête correspondante du site n'existe pas P>

python ./manage.py shell
>>> from django.contrib.sites.models import Site
>>> Site().save()
>>> Site.objects.all()[0].id
u'4fe7aa759e654e2662000000'


0 commentaires

0
votes

sudo python geper.py shell xxx

le mettre dans patterns.py Site_ID = U'53AA6456984EDD0D5E547E03 '


0 commentaires