我々はMySQLやsqlite3のを使用しているかどうかをDjangoはデータベースには、Djangoは我々が注目とタイプのSQLステートメントを必要としないので、Djangoは私たちが自動的に生成するのに役立ちます、自動的にSQL文の適切なデータベースの種類を生成するために私たちを助ける、モデルによって運営され、我々だけモデルは、それを記述する必要があります。
Djangoは自動的にクラスで書かれたコードに応じて、データベーステーブルを生成します。私たちは、クラスは、データベースのテーブルを表して書きます。
基本原則:
- 各モデルはジャンゴでPythonのクラスの性能であります
- 各モデルはdjango.db.models.Modelから、すべてのdjango.db.models.Modelのサブクラス継承であります
- 各クラスは、データベース内のテーブルを表すモデル
- モデル(属性)の各フィールドは、データベーステーブル内の列を表します
- Djangoは自動的にデータベースにアクセスするためのAPIを生成します。
記事の分類、記事、記事のラベル、スライドチャート、推奨位置、リンク:ここでは、我々は、データの6種類を格納する必要がブログプロジェクトを完了するために、分析した後、例として、ブログのプロジェクトを持っています。テーブルの各データ。
django.db インポートモデル から django.contrib.auth.models インポートユーザー #インポートDjangoはユーザモジュールが来ます #で掲示される クラス分類(models.Model): 名前 = models.CharField(' ブログの分類'、MAX_LENGTH = 100 ) インデックス = models.IntegerField(デフォルト= 999、verbose_name = ' ソート' ) クラスメタ: verbose_name = ' 博客分类' verbose_name_plural = verbose_name DEF __str__ (自己): 戻りself.nameの #のタグ クラスのタグ(models.Model): 名前 = models.CharField(' タグ'、MAX_LENGTH = 100 ) クラスのメタ- : verbose_name = ' 文章标签' verbose_name_plural = verbose_name DEF __str__ (自己): 戻りself.nameの #推奨位置 クラストゥイ(models.Model): 名前 = models.CharField(' 推奨位置'、MAX_LENGTH = 100 ) クラスメタ: verbose_name = ' 推荐位' verbose_name_plural = verbose_name デフ __str__ (自己): 戻りself.name #記事の クラスArticleこの記事だった(models.Model): タイトル = models.CharField(' 标题'、MAX_LENGTH = 70 ) 抜粋 = models.TextField(' 摘要'、MAX_LENGTH = 200、空白= 真) カテゴリ = models.ForeignKey(カテゴリ、on_delete = models.DO_NOTHING、verbose_name = ' 分類'、空白= Trueの場合、ヌル= TRUE) #分類-多くの関係の分類に関連した外部キー タグ= models.ManyToManyField(タグ、 = verbose_name ' タグを'、ブランク= TRUE) #タグに関連付けられた外部キーテーブルは、タグ対多の関係である IMG = models.ImageField(upload_to = ' article_img / Y%/%M /%D / '、= verbose_name ' ベース写真"、空白= Trueの場合、ヌル= 真) 本体 = models.TextField() ユーザー = models.ForeignKey(ユーザー、on_delete = models.CASCADE、verbose_name = ' 作者' ) ""」 ここから著者は、ユーザーdjango.contrib.auth.modelsインポートします。 ここでは、ユーザーに関連する記事やアップによりFOREIGNKEY。 "" " ビュー = models.PositiveIntegerField(' READ '、デフォルト= 0) TUI = models.ForeignKey(トゥイ、on_delete = models.DO_NOTHING、verbose_name = ' 推荐位'、空白= Trueの場合、ヌル= 真) CREATED_TIME = models.DateTimeField(' 名前'、auto_now_add = 真) MODIFIED_TIME = models.DateTimeField(' 修正'、auto_now = 真) クラスメタ: verbose_name = ' 記事' verbose_name_plural = ' 記事' デフ __str__ (自己): 戻りself.title #バナー クラスバナー(models.Model): text_info = models.CharField(' 标题'、MAX_LENGTH = 50、デフォルト= '' ) IMG = models.ImageField(' カルーセル図'、upload_to = ' バナー/ ' ) LINK_URL = models.URLField(' 画像リンク'、MAX_LENGTH = 100 ) is_active = models.BooleanField(' 是否是アクティブ'、デフォルト= 偽) デフ __str__ (自己): 戻りself.text_info クラスメタ: verbose_name = 「カルーセル図」 verbose_name_plural = 「カルーセル図」 #リンク クラスリンク(models.Model): 名前 = models.CharField(' リンク名'、20はMAX_LENGTH =です) linkurl = models.URLField(' 网址'、MAX_LENGTH = 100 ) デフ __str__ (自己): 戻りself.nameの クラスメタ: verbose_name = ' リンク' verbose_name_plural = ' リンク'
それら、記事や多くの関係を分類の中で、記事やラベルは、著者の記事と多対多の関係で、記事や推奨位置は、多くの関係1つです。
クラスIMG上記物品は、画像フィールドカバーを示し、article_img /アップロードディレクトリ、%Y /%mに/%D /ファイルのアップロードを自動的にアップロード時に添加されます。
上記のモデルの準備が完了した後、私たちはコーディングのモデルを完了したが、これらのモデルは、実際のデータベーステーブルに作成されていなかった、我々は、データベースの移行のために必要!
データベースの移行を実行する前に、我々は、MySQLの設定を(それが設定されていない場合は、デフォルトのデータベースを使用して)MySQLデータベースを使用してDjangoのプロジェクトを設定する必要があり、以下を参照してください。mysqlデータベースDjangoプロジェクトを使用する方法
我々はそれをデータベースの移行を実行することができますので、データベースは、構成された後!データベースの移行は非常に簡単で、単に次のコマンドを実行します。
python3 manage.py makemigrations
python3 manage.py移行
移行が枕、本の出現当社条クラスが使用する写真なぜならそれは間違った理由とバナーフィールドのImageFieldをインストールするように要求することができるとき、私たちは、パッケージを処理した画像を使用する必要が間違っ枕モジュールをインストールするには、画面の指示に従ってくださいすることができます:
PIP3インストール枕
枕モジュールは、その後正常にインストールされ、後に移行データベースを実行します。
データベースの移行が成功した後、プログラムは自動的に、ブログのディレクトリ内の最初の数移行にデータベースの移行レコードを記録したファイルを、ファイル000を生成します。
データベースは、データベース内のビューのテーブルに移行された後、テーブル名のデフォルト値:アプリケーション名_モデル名:
この時点で、我々のモデルモデルは成功を作成します!