2012-04-17 12 views
0

私はPython manage.py runserverを実行しますが、私がdb(python manage.py syncdb)を同期すると、端末に表示される次のエラーが表示されます。私はPython(2.7)プロジェクトをdjangoフレームワークで使用しています。私のプロジェクトのエラーは何ですか?

Creating tables ... 
Traceback (most recent call last): 
    File "manage.py", line 14, in <module> 
    execute_manager(settings) 
    File "/usr/lib/pymodules/python2.7/django/core/management/__init__.py", line 438, in execute_manager 
    utility.execute() 
    File "/usr/lib/pymodules/python2.7/django/core/management/__init__.py", line 379, in execute 
    self.fetch_command(subcommand).run_from_argv(self.argv) 
    File "/usr/lib/pymodules/python2.7/django/core/management/base.py", line 191, in run_from_argv 
    self.execute(*args, **options.__dict__) 
    File "/usr/lib/pymodules/python2.7/django/core/management/base.py", line 220, in execute 
    output = self.handle(*args, **options) 
    File "/usr/lib/pymodules/python2.7/django/core/management/base.py", line 351, in handle 
    return self.handle_noargs(**options) 
    File "/usr/lib/pymodules/python2.7/django/core/management/commands/syncdb.py", line 109, in handle_noargs 
    emit_post_sync_signal(created_models, verbosity, interactive, db) 
    File "/usr/lib/pymodules/python2.7/django/core/management/sql.py", line 190, in emit_post_sync_signal 
    interactive=interactive, db=db) 
    File "/usr/lib/pymodules/python2.7/django/dispatch/dispatcher.py", line 172, in send 
    response = receiver(signal=self, sender=sender, **named) 
    File "/usr/lib/pymodules/python2.7/django/contrib/auth/management/__init__.py", line 41, in create_permissions 
    "content_type", "codename" 
    File "/usr/lib/pymodules/python2.7/django/db/models/query.py", line 107, in _result_iter 
    self._fill_cache() 
    File "/usr/lib/pymodules/python2.7/django/db/models/query.py", line 772, in _fill_cache 
    self._result_cache.append(self._iter.next()) 
    File "/usr/lib/pymodules/python2.7/django/db/models/query.py", line 959, in iterator 
    for row in self.query.get_compiler(self.db).results_iter(): 
    File "/usr/local/lib/python2.7/dist-packages/djangotoolbox/db/basecompiler.py", line 229, in results_iter 
    for entity in self.build_query(fields).fetch(low_mark, high_mark): 
    File "/usr/local/lib/python2.7/dist-packages/djangotoolbox/db/basecompiler.py", line 290, in build_query 
    query.order_by(self._get_ordering()) 
    File "/usr/local/lib/python2.7/dist-packages/djangotoolbox/db/basecompiler.py", line 339, in _get_ordering 
    raise DatabaseError("Ordering can't span tables on non-relational backends (%s)" % order) 

django.db.utils.DatabaseError: Ordering can't span tables on non-relational backends (content_type__app_label) 

どのようにこの問題を解決するには?

+0

initdbはmongoを使ってjoin-likeクエリを実行しようとしています:) –

答えて

4

Djangoの代わりにDjango-nonrelを使う必要があります。

+0

@ Jonas.H:django-nonrelのインストールと使用方法については、簡単なチュートリアルがありますか? django-nonrelとdjango? – BobDroid

+0

http://www.allbuttonspressed.com/projects/django-nonrel このページを読んだら、MongoDB特有の手順はhttp://django-mongodb.orgにあります。 –

+0

混乱している人は、Django -nonrelはDjangoのforked版です。 –

2

私はmongoengineをdjangoと使いましたが、たとえばmongo_models.pyのようなファイルを作成する必要があります。そのファイルにMongoドキュメントを定義します。その後、それぞれのMongoドキュメントに一致するフォームを作成します。各フォームには、Mongoに格納されているものを挿入または更新するsaveメソッドがあります。 Djangoフォームは、任意のデータバックエンドに接続するように設計されています。(手工芸品の一部で)

注意:ドキュメントやモデルに記述できる非常に明確で構造化されたデータがある場合は、Mongoを使用しないでください。そのために設計されたものではなく、PostGreSQLのようなものがはるかに優れています。

  • 私はPostGreSQLをリレーショナルまたは構造化されたデータに使用しています。メモリの占有スペースが小さく、応答が良好です。
  • 私はRedisを使ってメモリキュー/リストをキャッシュしたり、動作させたりしています。素晴らしいパフォーマンスは、あなたがそれに対処するための記憶を持っていることを意味します。
  • 私はMongoを使用して大きなJSONドキュメントを保存し、マップを実行し、必要に応じてマップを縮小します。ルックアップを高速化できる場合は、特定の列で索引付けを使用してください。

四角い穴を丸く囲まないでください。それはそれを埋めることはありません。

Mongoが流行語であるため、MongoのリレーショナルDBを交換したいと思っている投稿が多すぎます。私が間違ってはいけない、Mongoは本当に素晴らしいです...あなたがそれを適切に使うとき。私はMongoを適切に使うのが好きです。

関連する問題