django mongodbエンジンエラーは、tellsiteidを実行しています
-
27-10-2019 - |
質問
そこで、チュートリアルに従ってDjangoプロジェクトとアプリを作成しましたが、MongoDBエンジンに必要なすべての依存関係があります。それはすべて、Adminインターフェイスを有効にしようとするまでうまく機能しているように見えます。
必要なビットを解除し、settings.pyのアプリセクションに「django_mongodb_engine」と「djangotoolbox」を追加しました。
localhost:8000/adminに入ろうとすると、エラーが発生します。
「AutoField(デフォルトのプライマリキー)値は、MongoDBのObjectIDを表す文字列でなければなりません(代わりにGot U'1 ')。サイト_IDに有効なObjectID文字列が含まれていることを確認してください。」
グーグルでグーグルを実行した後、私はmanage.py tellsiteidを実行する必要があります。settings.pyで使用できるIDを吐き出します。エラーが消えますが、manage.py tellsiteidを実行しようとすると、
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.
解決
まだサイトを作成していません。走る manage.py syncdb
1つを作成します。
他のヒント
サイトを作成してから、IDを取得できます。
python ./manage.py shell
>>> from django.contrib.sites.models import Site
>>> s = Site()
>>> s.save()
その後:
python ./manage.py tellsiteid
必要ない場合 sites
機能(非常に可能性が高い)は単純にオフになります django.contrib.sites
アプリとそれは、site_idに関連するmongodbの問題を修正します:
INSTALLED_APPS = (
(...)
# 'django.contrib.sites', # Comment this out
(...)
)
何らかの理由で、ここのソリューションは私のために働いていませんでした。 python ./manage.py tellsiteid
, 、ありませんでした django_site
コレクション、コメントアウト 'django.contrib.sites'
奇妙なエラーを引き起こしました。
シェルからIDをつかむことは私のために働いたが、ここで詳述した:
https://gist.github.com/ielshareef/2986459またはこちら サイトマッチングクエリは存在しません
python ./manage.py shell
>>> from django.contrib.sites.models import Site
>>> Site().save()
>>> Site.objects.all()[0].id
u'4fe7aa759e654e2662000000'
中に入れて settings.py
そして、すべてがうまくいきました!
先日、セットアップ中にこれに出くわしました。
基本的には、MongoシェルにロゴをロゴにしてSiteIDを検索してから、設定を追加する必要があります。
Mongoシェルにログインします
mongo
DBを選択します
use *name*
次に、django_siteでfind()を実行します
db.django_site.find()
次に、settings.pyを開き、site_id = "" line(mine is bouth)を編集します
SITE_ID = u'4f1f82011d41c81e5c00001d'
それはあなたを稼働させて走らせるはずです
ほとんどの場合、あなたはまだサイトを作成していません、そうするためには、あなたはコマンドを実行する必要があります
python manage.py syncdb
これにより、サイトが作成されます。これで、Site_idを設定ファイルに追加する必要があります。サイトIDを取得し、実行中のMongoDBエンジンに接続し、次のコマンドを実行します
use mydatabase --/# or whatever name you have for your database.
db.django_site.find()
あなたは次のようなものを手に入れます
ObjectId("4f4e968adea3b3b30c00001d")
次に、設定ファイルで、PUTを使用します
site_id = u'4f4e968adea3b3b30c00001d'
そして、管理インターフェイスは機能するはずです。それは?
私が使う manage.py syncdb
その後 manage.py tellsiteid
しかし、それでもエラーを表示します。
最終的にデータベースを削除して再度同期して解決します。
これが誰かを助けることができることを願っています:)
sudo python manage.pyシェル
from django.contrib.sites.models import Site
Site().save()
Site.objects.all()[0].id
u'53aa6456984edd0d5e547e03'
settings.py site_id = u'53aa6456984edd0d5e547e03 '