プロジェクトの作成:django-admin.py startproject_name python manage.py helpすべてのコマンドセットを表示
しかし、システムはappに対して約束があります.Djangoのデータベース層(モデル)を使用している場合は、django appを作成する必要があります.モデルはappsに保存する必要があります python manage.py startapp app_name 次のコマンドによる検証モデルの有効性:python manage.py validate sqlallコマンドはデータベースにデータテーブルを作成していません.SQL文セグメントを印刷するだけです.python manage.py sqlall booksはSQL文を実行し、syncdbコマンドを実行します.python manage.py syncdb syncdbコマンドは、モデルをデータベースに同期する簡単な方法です.INSTALLED_に基づいてAPPSに設定されたappはデータベースをチェックし、テーブルが存在しない場合は作成します. では、syncdbはモデルの変更をデータベースに同期できないことに注意してください.モデルを変更してデータベースを更新したい場合は、syncdbはを助けることができません.
python manage.py syncdbを再実行すると、新しいモデルを追加したり、新しいapp を追加したりしていないため、何も起こりません.
メソッド__str__()
をPublisherオブジェクトに追加するだけです.__str__()
メソッドは、Pythonがオブジェクトを文字列としてを使用する方法を示します.
__str()__
もモデルに動作を追加する方法を示す良い例です.Djangoのモデルは,オブジェクトにデータベーステーブルの構造を定義するだけでなく,オブジェクトの動作も定義する.__str__()
は、モデルがを表示する方法を知っている例です.
Publisher.objects.all()
この行の各部分: objectsは何をしていますか?技術的には、マネージャです.マネージャは、付録Bで詳細に説明します.ここでは、データテーブルに関する操作、特にデータ検索を処理することを知っています. すべてのモデルはobjectsマネージャを自動的に所有します.データを検索するときに使用できます.マネージャの名前は、自分で変更できるです.
最後にall()メソッドもあります.これはobjectsマネージャがすべてのレコードを返す方法です.このオブジェクトはリストのように見えますが、実際にはQuerySetオブジェクトであり、データベース内のレコードのセットです.付録CではQuerySetについて詳しく説明しますが、ここではまずシミュレーションリストオブジェクトであるとします. QuerySetは、データベース内のオブジェクトの集合を表します.与えられたパラメータに基づいていくつかのフィルタを構築して、この集合の規模を縮小することができる.SQL用語で言えば、QuerySetはSELECT文に相当し、フィルタはWHEREやLIMITのような限定語に相当する.1つのモジュールでは、ManagerはQuerySetsの主なソースです.これは、モジュールのデータベース・テーブル内のすべてのオブジェクトを記述できる根本的なQuerySetのようなものです.例えば、Blog.objects
は、データベース内のすべてのBlogオブジェクトを含む根本的なQuerySetである. 毎回orderを使いますby()はちょっとうるさいように見えます.ほとんどの場合、いくつかのフィールドをソートするだけです.この場合、Djangoでは、モデルのデフォルトのソート方法を指定できます.class Meta:
ordering = ["name"]
このordering=["name"]Djangoに提供order_が表示されていない場合はby()は、デフォルトで名前順に Metaとは何ですか? Djangoは、内部クラスMetaを使用してモデルを記述するメタデータを追加的に格納し、付録Bを参照し、Meta項の下で、より多くのオプション情報を得る.
あなたのモデルの各フィールドは適切なFieldクラスのインスタンスであるべきで、Djangoはこのフィールドクラスのタイプを使用して次の内容を決定します.データベース列タイプ(INTEGER、VARCHARなど). Djangoのadminインタフェースで使用する部品を指定したい場合.(例:
)