2016-05-26 3 views
1

mongdbとdjangoの分離依存関係はどのように機能しますか?MongoDBとDjangoの依存関係の分離はどのように機能しますか?

私はJAVA/SPRINGでいくつかのプロジェクトを行いました。最近は 私はPython djangoを勉強しています。

djangoとsqliteの接続に成功し、数日前に mongodbに接続しようとしましたが、django-adminのために依存関係のデータベースとdjangoを分離することは困難です。

Django-adminでは各モデルに固有のフィールドを取得する必要がありますが、すべてのデータベースにはそれぞれ独自のFieldプロパティがあります。したがって、プロジェクトがデータベース構造を変更する必要がある場合は、model.pyで多くのコードを変更する必要があります。

例えば

何sqliteのは、MongoDBのかの?異なるドライバを使用するだけではサーバーを動作させることはできません。例えばmodels.TextField(sqlite) - > models.StringField(mongodb)です。それは避けられない、そうですか?データベースとdjangoの間の依存関係を完全に解消することは難しいようです。

大丈夫ですか?私は何かが恋しいですか?

答えて

0

sqliteをMongodbに変換するとどうなりますか?異なるドライバを使用するだけではサーバーを動作させることはできません。例えばmodels.TextField(sqlite) - > models.StringField(mongodb)です。それは避けられない、そうですか?それはあなたがそれはほとんどすべてのデータベースでサポートされているので問題を抱えているが、このライブラリdjango-mongodb-engineを検討する場所を完全にデータベースとDjango

TextFieldStringField間の依存関係をsolatingことではないことは難しいようで、それが基本的なフィールドすでにを再利用します可能な範囲でDjango ORMに存在します。例えば、その後ListField()

class Post(models.Model): 
    title = models.CharField() 
    text = models.TextField() 
    tags = ListField() # <-- not supported everywhere 

よう

class Post(models.Model): 
    title = models.CharField() <-- both Django ORM and mongodb-engine have this 
    text = models.TextField() <-- both Django ORM and mongodb-engine have this 

SQLとMongoDBのエンジンでもあるように、このモデルでは動作しますが、あなたは(デフォルトDjangoのORMエンジンではないのように)MongoDBの-のみを使用した場合に機能しますがSQLエンジンへの移行には、そのフィールドをマップする手作業が必要になります。

したがって、プロジェクトでデータベース構造を変更する必要がある場合は、多くのコードをmodels.pyに変更する必要があります。それは大丈夫ですか?

通常、データベース構造を変更するには、models.pyに変更を加えます。その後、migrationを実行します。これは、データベースを変更するためのスクリプトを生成するステップです(新しいSQLテーブルの列を追加するなど)。 MongoDBの場合、スキーマは柔軟であるため、明示的な移行はありません(または、schemaless)。

Djangoモデルに関しては管理者にとってはかなりスマートですが、管理者に表示させたいモデルやフィールドを定義する必要があるかもしれませんが、詳細ビューではすべてを心配する必要はありませんDjangoの管理者がmodels.py

の情報に基づいてそれらを理解し、データベースドライバを変更するように、単一のフィールドは、それがsettings.py

+0

DATABASES値です再びこの豊か役立つガイドとの情報のためにありがとうございました。私はあなたのリンクでもっと勉強しなければなりません。 –

関連する問題