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.
È stato utile?

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
    (...)
)

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'

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top