ジャンゴ学習 - データベース構成 - モデルを作成

 データベース設定

個人用サイト/ settings.pyでは、モジュールはPythonのDjangoのプロジェクト設定を含み

 

通常、この設定ファイルは、デフォルトのデータベースとしてSQLiteのを使用しています。あなたがデータベースに精通していない、またはちょうどジャンゴを試してみたい場合は、これが最も簡単な選択です。PythonはビルトインのSQLite、あなたは余分なものをインストールするためにそれを使用する必要はありません。あなたが本当のプロジェクトを開始するとき、あなたは頭痛の真ん中を避けるために、このようなPostgreSQLのデータベース・スイッチなど、よりスケーラブルなデータベースを、使用することを好むかもしれません。

 

あなたが別のデータベースを使用する場合は、適切なデータベースbindlingsをインストールし、キーのいくつかの設定ファイルデータベース「デフォルト」プロジェクトを変更する必要があります。

例えば:

DATABASES = {
     ' デフォルト' {
         ' ENGINE '' django.db.backends.sqlite3 ' ' NAME ':os.path.join(BASE_DIR、' db.sqlite3 ' 
    } 
}

 

  

DATABASE「デフォルト」の重要なプロジェクトの数
エンジン - データベースタイプオプションの値:
' django.db.backends.sqlite3 ' 
' django.db.backends.postgresql ' 
' django.db.backends.mysql ' 
' django.db.backends.oracle '

 

データベースの名前品名 -

あなたはSQLiteのを使用している場合、データベースは、この場合には、NAMEはファイル名を含む、ファイルへの絶対パスにする必要があり、コンピュータ上のファイルになります。デフォルト値os.path.join(BASE_DIR、「db.sqlite3」)は、データベースファイルは、プロジェクトのルートディレクトリに格納されて入れます。

 

あなたはSQLiteのを使用していない場合、あなたは、このようなので、上のユーザー、パスワード、ホスト、およびなどいくつかの追加設定を追加する必要があります。

 

以下のような:

DATABASES = {
     ' デフォルト' {
         ' ENGINE '' django.db.backends.postgresql ' ' NAME '' てMyDatabase ' ' USER '' mydatabaseuser ' ' PASSWORD '' mypasswordを' ' HOST '' 127.0.0.1 ' "PORT "' 5432 ' 
    } 
}

 

SQLiteデータベース以外の

あなたはSQLiteの以外のデータベースを使用している場合は、使用前にご確認くださいデータベースを作成しました。コマンドをこのを成し遂げるために、あなたはあなたのデータベースの対話型のコマンドラインは、「データベースdatabase_nameをCREATE」を使用することができます。

 

また、オペレーティング・個人用サイトでのデータベースのユーザーは/持っている権限「データベースを作成する」のsettings.pyていることを確認します。これは、テスト・データベースを自動的に作成することができた後、チュートリアルを作ります。

 

SQLiteを使用しているならば、名前あなたは、使用前に何かをする必要はありません - 必要なときにデータベースが自動的に作成されます。

 

元編集者の個人用サイト/ settings.pyファイルには、まずあなた自身のタイムゾーンのTIME_ZONEを設定します。

 

また、INSTALLED_APPS設定ファイルのヘッダを見て。これは、プロジェクトで有効になってすべてのDjangoのアプリケーションが含まれています。アプリケーションは複数のプロジェクトで使用することができ、あなたも他の人がそれらを使用させ、アプリケーションをパッケージ化して公開することができます。

例えば:

INSTALLED_APPS = [
     ' django.contrib.admin ' ' django.contrib.auth ' ' django.contrib.contenttypes ' ' django.contrib.sessions ' ' django.contrib.messages ' ' django.contrib.staticfiles ' 
]

 

INSTALLED_APPS

通常、デフォルトのアプリケーションを含むINSTALLED_APPSには、以下のジャンゴが付属しています:

 

django.contrib.admin-サイト管理者

django.contrib.auth-認証および承認システム

django.contrib.contenttypes-コンテンツタイプのフレームワーク

django.contrib.sessions-セッションフレームワーク

django.contrib.messages-メッセージフレーム

管理フレームワークdjango.contrib.staticfiles-静的ファイル

 

これらのアプリケーションは、一般的なプロジェクトへの利便性を提供するために、デフォルトで有効になっています。

特定のアプリケーションのためにデフォルトで有効になっては、少なくとも1つのデータテーブルを必要とするので、あなたはそれらを使用する前に、データベース内のいくつかのテーブルを作成する必要があります。

PY -3 manage.py移行データベース移行コマンド

migrateコマンドは、INSTALLED_APPSの設定を確認し、具体的作成するものに、それらの各アプリケーションに必要なデータテーブルを作成するには、各アプリケーションのためのデータベースの移行ファイルの個人用サイト/ settings.pyファイルと設定によって異なります。このコマンドは、端末に表示される各移行操作のために実行されます。

 

ショーのテーブルを実行することができます。ジャンゴに特別に作成されているものの表を参照してください。

 

 

デフォルトで有効になっていくつかのアプリケーションをDjangoのではなく、誰もがそれらを必要とします。私たちは、一つまたはいくつかのアプリケーションを必要とするノートやINSTALLED_APPS移行実行する前に、内部からそれらを削除しない場合。

移行データベース移行コマンドはINSTALLED_APPS年のアプリケーションのために宣言されます。

 

モデルを作成します。

最初のステップではジャンゴでのデータベース駆動型のWebアプリケーションを書くのモデルを定義することである - 、データベース構造の設計および他の追加のメタデータです。

 

モデルは、実際のデータを簡単かつ明確な記述です。これは、必要なデータ・ストレージ・フィールドと動作が含まれています。DjangoはDRY原則に従う(非繰り返し作成ホイールを)。その目標は、あなただけが、彼らは自動的にモデルから生成されます気にしないデータモデル、およびその他の各種コードを定義する必要があるということです。

 

例えば、移行コードが自動的にちょうど歴史は、Djangoはデータベースの更新をスクロールするために使用することができ、本質的には、あなたのモデルファイルによって生成されたジャンゴ、そしてこのようにしてすることができます - 移行を紹介するために、現在のモデルマッチング。

 

問題とオプションの質問の選択:この単純な投票アプリケーションでは、次の2つのモデルを作成する必要があります。質問モデルは、問題とリリース日の説明が含まれています。選択モデルは、2つのフィールドがありオプション、および投票の現在の数を示します。問題に属する各オプション。

 

これらの概念は、単純なPythonのクラスで記述することができます。次の例では、ポーリング/ models.pyファイルを編集するには:

 

django.db 輸入モデル

#は、ここにあなたのモデルを作成します。

クラス質問(models.Model):
    QUESTION_TEXT = models.CharField(MAX_LENGTH = 200 
    PUB_DATE = models.DateTimeField(' 日に公開' 

クラスの選択(models.Model):
    質問 = models.ForeignKey(質問、on_delete = models.CASCADE )
    choice_text = models.CharField(MAX_LENGTH = 200 
    投票 = models.IntegerField(デフォルト= 0)

コードは、各モデルは、クラスdjango.db.models.Modelのサブクラスとして表され、非常に簡単です。各モデルは、クラス変数の数を持って、彼らは、データベースフィールドにモデルを述べました。

 

フィールドの各フィールドは、クラスのインスタンスである - CharFieldです、日付と時刻がDateTimeField型として発現されるように、例えば、文字フィールドが示されています。各フィールドのこの高速Djangoのデータ型は、処置されます。

 

名前(例えばQUESTION_TEXT又はPUB_DATE)フィールド各クラスインスタンスの変数は、フィールド名であり、機械向けのフォーマットを使用することが好ましいです。あなたはpythobコードでそれらを使用すると、データベースはそれが列名のようになります。

 

あなたは人間可読な名前を定義するには、オプションのフィールドオプションを使用することができます。ジャンゴの多くの内部コンポーネントでこの機能を使用するだけでなく、文書の一部としてされています。フィールドは、この名前を提供しない場合、Djangoは変数名で、マシンフレンドリー名を使用します。

上記の例では、我々は唯一のQuestion.pub_dateために人間に優しい名前を定義します。モデル内の他のフィールドのために、自分のマシンに優しい名は人間に優しい名として使用されます。

 

特定のパラメータのフィールド定義は、クラスのインスタンスを必要としています。例えばCharFieldですがMAX_LENGTHパラメータを必要としています。このパラメータの有用性は、データベースの構造を定義するために使用されることはありません、また、データを検証するために使用され、我々は後でこの点で何かを参照してください。

 

フィールドは、オプションの複数のパラメータを受信することができ、上記の例では:投票されるデフォルトは、0に設定されているデフォルト値です。

 

最後に、我々はForeighKeyの関係を定義使用していることに注意してください。この高速ジャンゴは、各選択肢のオブジェクトは、質問オブジェクトに関連付けられています。Djangoは全て共通のデータベースの関係をサポートしています。多対多と一から一。

 

 

アクティベーションモデル

上記のコードは、情報のDjangoの多くにチームのモデルを作成するために使用され、この情報を、あなたが行うことができますいくつかのものがジャンゴ:

1)このアプリケーションのデータベーススキーマを作成します(CREATE TABLEステートメントを生成)

2)データベースAPIの質問と選択肢のオブジェクトと対話できるのpythonを作成します。

 

しかし、最初にあなたは、当社のプロジェクトに適用されるポーリングをインストールする必要があります

 

デザイン哲学:

Djangoアプリケーションは、の「プラグ可能」です。あなたは複数のプロジェクトで同じアプリケーションを使用することができます。彼らは現在インストールされているジャンゴに結合しないので、また、あなたはまた、独自のアプリケーションを公開することができます。

 

私たちのプロジェクトでは、このアプリケーションを含めるには、我々は内のコンフィギュレーションクラスINSTALLED_APPSの設定を追加する必要があります。それはpolls.apps.PollsConfig」ですので、ファイルはパスポイントでクラスPollsConfigポーリング/ app.pyで書かれているので。INSTALLED_APPサブキーポイントパスでファイル個人用サイト/ settings.pyした後、それは次のようになります。

INSTALLED_APPS = [
     ' polls.apps.PollsConfig ' ' django.contrib.admin ' ' django.contrib.auth ' ' django.contrib.contenttypes ' ' django.contrib.sessions ' ' django.contrib.messages ' ' django.contrib.staticfiles ' 
]

 

今すぐあなたのDjangoプロジェクトは、ポーリングのアプリケーションが含まれます。そして、次のコマンドを実行します。

PY -3 manage.py makemigrations世論調査では、マイグレーションを発生させます

 

次のような出力が表示されます。

 

コマンドを実行してMakemigrations、Djangoの検出は、(新しいこの場合には、あなたが達成している)あなたは、モデルファイルを変更し、移行の修正の一部として保存します。

 

移行は、Djangoのモデル定義のためである(つまり、あなたのデータベース構造である)の変化の形で保存されている - そうあやふやではない、実際には、彼らはちょうどあなたのディスク上のファイルの一部です、あなたは世論調査/移行/ 0001_initial.pyに、データモデルを移行読むことができます年。図は次のとおりです。

 

 

 

Djangoは、コマンドのデータベース結果の自動化されたデータの移行と同期の管理を持っている - このコマンドは移行され、我々はすぐにそれと接触します。

しかし、最初の移行コマンドを実行しますどのようなSQL文を見てみましょう。

sqlmigrateコマンドは、対応するSQLを返し、その後、移行の名前を受信します。
PY -3 manage.py sqlmigrate世論調査0001

あなたは以下の出力(出力再編成は、人間が読める形式になった)のように表示されます。

D:\ジャンゴ\個人用サイト> PY -3 manage.py sqlmigrate世論調査0001 

BEGIN; 

- 

- モデルの質問を作成する

 - 

`polls_question`(` id`整数AUTO_INCREMENT NOT NULL PRIMARY KEY、 `question_text` VARCHAR(CREATE TABLEを 200)NOT NULL、` pub_date`日時(6 )NOT NULL)。

- 

- モデルの選択肢を作成

 - 

CREATE TABLE `polls_choice`(` id`整数AUTO_INCREMENT NOT NULL PRIMARY KEY、 `choice_text`のVARCHAR( 200 )NOT NULL、` votes`整数をNOT NULL、 `question_id`整数NOT NULL)を、

( `id`)(question_id``)FOREIGN KEYをpolls_choice_question_id_c5b4b260_fk_polls_question_id` REFERENCES `` polls_question` CONSTRAINTを追加polls_choice` TABLE `を改変すること。

コミット;

 

 

次の点に注意してください。

1)出力内容と上記の例の出力をご使用に関連するデータベースはMySQLを使用します

2)小文字のアプリケーション名(ポーリングによるデータベーステーブルの名前)との接続モデル名(質問と選択肢)。(必要な場合は、この動作をカスタマイズすることができます。)

3)主キー(ID)を自動的に作成されます。(もちろん、あなたもカスタマイズすることができます)

4)デフォルトでは、Djangoは文字列「_id」外のキーフィールドを追加します。(同様に、それはカスタマイズすることができます。)

5)生成された外部キー関係FOREIGN KEYがあります。あなたは(PostgreSQL用)DEFERRABLE部分を気にしない、それは、PostgreSQLを伝えるために参照し、実行されたすべての取引後の外部キー関係を再作成してください。

6)生成されたSQL文は、データベースの使用のためにカスタマイズされたので、これら、および、そのようなAUTO_INCREMENT(MySQLの)、シリアル(PostgreSQLの)と整数主キーの自動インクリメント(SQLiteの)としてデータベース関連のフィールドタイプは、Djangoは自動的にあなたを助けるれます。関連するそれらのものと引用符は - 例えば、単一引用符または二重引用符を使用する - 同じことが自動的に処理されます。

7)このsqlmigrateは、実際にデータベースに移行コマンドを実行していない - それはちょうどあなたがDjangoのSQL文を実行する必要があると思うものを見ることができるように、画面に命令を出力します。あなたがやろうとして終わりではDjangoを見たい場合に便利です、またはデータベース管理者である場合は、バッチ処理のデータベースにスクリプトを記述する必要があります。

 

PY -3 manage.pyチェック検査項目

Pyが-3 manage.pyチェックが問題になっている項目をチェックするのに役立つコマンドを実行することができ、およびデータベースが検査工程で任意の操作を行うことはありません

 

データベースで定義された新しいデータモデルのテーブルを作成するために、migrateコマンドを実行します。

 

D:\ジャンゴ\個人用サイト> PY -3 manage.py移行

実行する操作:

  管理、認証、contenttypesの、世論調査、セッション:すべてのマイグレーションを適用します

マイグレーションを実行します:

  OK ... polls.0001_initialを適用します

 

すべての移行を選択するmigrateコマンドが実行されていない(移行した実行さを追跡するためのデータベースで特別なテーブルdjango_migrationsを作成することによって、ジャンゴを)とデータベース上のアプリケーション-つまり、あなたは、データベース構造に同期モデルを変更します。

 

移行では、再作成してテーブルを削除することなく、継続的な開発プロセスにおけるデータ構造を変更することができ、非常に大きな機能である - それは、データを失うことなく、データベースをアップグレードするので、スムーズに焦点を当てています。私たちは、限り、あなたはモデルを変更することを忘れないよう、次の3つの手順が必要で、今後のチュートリアルのこの部分での深い多くを学びます。

 

変更の手順モデル

1)、models.pyファイルを編集してモデルを変更。

2)実行のpython manage.pyのmakemigrationsは、モデルを変更するためにファイルを移行生成します

3)実行のpythonは、アプリケーション・データベースの移行に移行manage.pyの

 

データベースの移行が発生し、中に複数のアプリケーションで使用されるようにあなたは、移行コード管理システム上のデータを提出し、それを有効にすることを可能にするために適用される2つのコマンドに分割され、これは簡単に開発するだけでなく、他の開発者に対して行うだけでなく、そして本番環境の利便性を使用しています。

 

おすすめ

転載: www.cnblogs.com/xiaxiaoxu/p/11665801.html