Errore di Django MongoDB motore durante l'esecuzione tellsiteid
-
27-10-2019 - |
Domanda
Così ho creato un progetto Django e applicazioni come per il tutorial e ho tutte le dipendenze necessarry per MongoDB Engine tutto sembrava essere bene e dandy lavorando finché non ho provato a permettere l'interfaccia di amministrazione.
I uncommented require bit, e aggiunse 'django_mongodb_engine' e 'djangotoolbox' alla sezione applicazioni in settings.py
Quando provo ad entrare in localhost: 8000 / admin ottengo un errore:
"AutoField valori (predefinito primario chiave) deve essere stringhe che rappresentano un ObjectId su MongoDB (ottenuto u'1' invece). Assicurati che il tuo SITE_ID contiene una stringa ObjectId valido."
Dopo un po 'googling a quanto pare devo correre tellsiteid manage.py e mi sputerò un ID posso utilizzare nel mio settings.py che farà l'errore di andare via, ma quando provo a fare funzionare manage.py tellsiteid I ottenere:
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.
Soluzione
Non hai ancora creato alcun sito. Eseguire manage.py syncdb
crearne uno.
Altri suggerimenti
È possibile creare il vostro sito, e quindi, ottenere l'ID:
python ./manage.py shell
>>> from django.contrib.sites.models import Site
>>> s = Site()
>>> s.save()
e poi:
python ./manage.py tellsiteid
Se non è necessario la funzionalità sites
(che è molto probabile) semplicemente spegnere django.contrib.sites
app e sarà risolvere i problemi legati alla MongoDB SITE_ID:
INSTALLED_APPS = (
(...)
# 'django.contrib.sites', # Comment this out
(...)
)
Hai provato questo: http://django-mongodb.org/troubleshooting .html # site-id-problemi
Per qualche motivo nessuna delle soluzioni qui ha funzionato per me. python ./manage.py tellsiteid
, non vi era alcuna raccolta django_site
, e commentando 'django.contrib.sites'
causato errori strani.
Afferrando l'ID dal guscio lavorato per me, però, dettagliato qui:
https://gist.github.com/ielshareef/2986459 o qui query corrispondente del sito non esiste
python ./manage.py shell
>>> from django.contrib.sites.models import Site
>>> Site().save()
>>> Site.objects.all()[0].id
u'4fe7aa759e654e2662000000'
Mettere in settings.py
e tutto funzionava alla grande!
mi sono imbattuto in questo durante la mia messa a punto, l'altro giorno.
In sostanza è necessario il logo in un guscio mongo e la ricerca la tua siteid quindi aggiungerlo al settings.py
log in un guscio mongo
mongo
selezionare il db
use *name*
poi fare un find () su django_site
db.django_site.find()
Quindi aprire il settings.py e modificare SITE_ID = "" linea (il mio è di seguito)
SITE_ID = u'4f1f82011d41c81e5c00001d'
Questo dovrebbe farti installato e funzionante
Molto probabilmente si havent ancora creato un sito, per farlo è necessario eseguire il comando
python manage.py syncdb
Questo crea il sito, ora è necessario aggiungere il suo site_id nel file delle impostazioni. Vai ottenere il sito id, collegarsi al motore di MongoDB che esegue, ed eseguire i seguenti comandi
use mydatabase --/# or whatever name you have for your database.
db.django_site.find()
si otterrà qualcosa di simile
ObjectId("4f4e968adea3b3b30c00001d")
Poi, nel tuo file di impostazioni, mettere
site_id = u'4f4e968adea3b3b30c00001d'
e l'interfaccia di amministrazione dovrebbe funzionare. Lo fa?
Io uso manage.py syncdb
e poi manage.py tellsiteid
ma ancora errore di visualizzazione.
Ho finalmente risolverlo facendo cadere nuovamente il database e la sincronizzazione.
Spero che questo può aiutare qualcuno:)
sudo python shell manage.py
from django.contrib.sites.models import Site
Site().save()
Site.objects.all()[0].id
u'53aa6456984edd0d5e547e03'
Metti in settings.py SITE_ID = u'53aa6456984edd0d5e547e03'