良い一日!
このトピックは、 Djangoドキュメントの翻訳の最初の部分、つまりモデルセクションです。 私はプロの翻訳者ではなく、最初は自分で翻訳を行ったとすぐに言いたいです。 すべてのコメントと質問は、コメントを記入するか、メールで送信してください。 この情報がお役に立てば幸いです。
_モデル
___小さな例
___モデルの使用
___フィールド
_____フィールドタイプ
_____フィールドパラメータ
_____自動主キー
_____詳細なフィールド名
Djangoドキュメントの翻訳:モデル。 パート2
Djangoドキュメントの翻訳:モデル。 パート3
Djangoドキュメントの翻訳:モデル。 パート4(最後)
このドキュメントはDjangoのSVNリリース用であり、以前のものとは大幅に異なる場合があります。 古いドキュメント(Django 1.0用)はここから入手できます。
モデル
モデルは、データに関する唯一の最終的な情報源です。 格納するデータの動作を説明し、その主要フィールドが含まれています。 原則として、各モデルはデータベーステーブルの1つの表現です。
基本情報:
- 各モデルは、 django.db.models.Modelのサブクラスであるクラスです。
- 各モデル属性は、個別のデータベースフィールドを表します。
- Djangoはモデルを使用して、自動的に生成されたデータベースアクセスAPIを実際に提供します( クエリの作成を参照 )。
このドキュメントに加えて、モデルの使用例の公式リポジトリがあります(これらの例は、Djangoディストリビューションのtests / modeltestsディレクトリにもあります )。
小さな例
この例では、 first_nameフィールドとlast_nameフィールドを含むPersonクラスが定義されています。
Copy Source | Copy HTML<br/> from django.db import models<br/> <br/> class Person (models.Model):<br/> first_name = models.CharField(max_length= 30 )<br/> last_name = models.CharField(max_length= 30 ) <br/>
first_nameとlast_nameはモデルのフィールドです。 各フィールドはクラス属性を定義し、各属性はデータベース列です。
上記のPersonクラスは、次のようなデータベーステーブルを作成します。
Copy Source | Copy HTML<br/> CREATE TABLE myapp_person (<br/> "id" serial NOT NULL PRIMARY KEY ,<br/> "first_name" varchar( 30 ) NOT NULL ,<br/> "last_name" varchar( 30 ) NOT NULL <br/>); <br/>
テクニカルノート:
- テーブル名myapp_personはモデルのメタデータから自動的に取得されますが、一度設定すると、再定義できます( テーブル名を参照)。
- idフィールドは自動的に追加されますが、この動作を変更できます。
- この例では、PostgreSQLで使用されるSQL構文が使用されますが、 設定ファイルで指定されたデータベースに基づいてDjangoがSQLを使用することに注意してください。
モデルを使用する
モデルを特定したら、使用するつもりであることをDjangoに伝える必要があります。 これは、設定ファイルを変更すること、つまり、 INSTALLED_APPSを編集することで行われます。このファイルでは、 models.pyを含むモジュールの名前を追加する必要があります。
たとえば、アプリケーションのモデルがmysite.myapp.modelsモジュールにある場合(この構造はmanage.py startappスクリプトの実行後に作成されます )、必要なINSTALLED_APPSの部分は次のようになります。
Copy Source | Copy HTML<br/>INSTALLED_APPS = (<br/> #... <br/> 'mysite.myapp' ,<br/> #... <br/>) <br/>
INSTALLED_APPSを編集した後、 syncdbスクリプトを忘れずに実行してください。
フィールド
最も重要なもの
モデルの重要な部分は、モデルが定義するデータベースフィールドのリストです。 フィールドはクラス属性によって定義されます。
例:http://docs.djangoproject.com/en/dev/ref/models/instances/#django.db.models.Model.__unicode__
Copy Source | Copy HTML<br/> class Musician (models.Model):<br/> first_name = models.CharField(max_length= 50 )<br/> last_name = models.CharField(max_length= 50 )<br/> instrument = models.CharField(max_length= 100 )<br/> <br/> class Album (models.Model):<br/> artist = models.ForeignKey( Musician )<br/> name = models.CharField(max_length= 100 )<br/> release_date = models.DateField()<br/> num_stars = models.IntegerField() <br/>
フィールドタイプ
モデルの各フィールドは、対応するFieldクラスのインスタンスでなければなりません。 Djangoは、Fieldクラスのタイプを使用して、いくつかのことを定義します。
- データベースの列タイプ( INTEGER、VARCHARなど )。
- 使用したい場合にDjangoで管理インターフェースを使用するためのウィジェット(例えば、 入力タイプ= "text"> )。
- 管理インターフェイスで使用される検証の最小要件は次のとおりです。http://docs.djangoproject.com/en/dev/ref/models/instances/#django.db.models.Model.__unicode__ Djangoおよび自動生成フォーム。
Djangoには多数の組み込み型が付属しています。 完全なリストは、 モデルフィールドのヘルプで確認できます 。 独自のタイプのフィールドを作成することもできます 。
フィールドオプション
各フィールドには、 モデルフィールドのヘルプに記載されている特性引数の特定のセットがあります 。 たとえば、 CharField (およびそのサブクラス)にはmax_length引数が必要です。これは、データを格納するために使用されるVARCHARデータベースフィールドのサイズを決定します。
docs.djangoproject.com/en/dev/ref/models/instances/#django.db.models.Model.__unicode__
また、すべてのタイプのフィールドで使用できる共通の引数のセットがあります。 それらはすべてオプションです。 詳細な説明はヘルプにありますが、最も頻繁に使用されるものの簡単な概要をここに示します。
ヌル
引数の値がTrueの場合、DjangoはNULL値をデータベースにNULLとして保存します 。 デフォルトはFalseです。
空白の
引数の値がTrueの場合、フィールドは空かもしれません。 デフォルトはFalseです。
blankはnullであることに注意してください。 null引数はデータベースにのみ適用され、 空白は入力のチェックを担当します。 フィールドの値がTRUEの引数が空白の場合、 docs.djangoproject.com / en / dev / ref / models / fields /#django.db.models.Field.defaultをチェックインすると 、Django管理インターフェイスで null値の入力が許可されます。 属性値がFalseの場合、フィールドはhttp://docs.djangoproject.com/en/dev/ref/models/fields/#django.db.models.Field.default requiredになります。
選択肢
特定のフィールドの選択肢として使用される値の複数のペアで構成されるイテレータ(リストやタプルなど)。 引数が指定されている場合、Django管理インターフェイスは、通常の入力フィールドの代わりにドロップダウンリストを使用し、指定されたものに選択肢を制限します。
選択肢のリストは次のようになります。
<docs.djangoproject.com/en/dev/ref/models/instances/#django.db.models.Model.__unicode__
a href="http://sc.me/3744/s">Copy Source | Copy HTML <br/>YEAR_IN_SCHOOL_CHOICES = (<br/> (u 'FR' , u 'Freshman' ),<br/> (u 'SO' , u 'Sophomore' ),<br/> (u 'JR' , u 'Junior' ),<br/> (u 'SR' , u 'Senior' ),<br/> (u 'GR' , u 'Graduate' ),<br/>) <br/>
各タプルの最初の要素はデータベースに入力される値で、2番目は管理インターフェイスまたはModelChoiceFieldに表示されます。 モデルオブジェクトのインスタンスを使用する場合、フィールドの選択肢の出力はget_FOO_displayメソッドを使用して実行できます。 例:
Copy Source | Copy HTML<br/> from django.db import models<br/> <br/> class Person (models.Model):<br/> GENDER_CHOICES = (<br/> (u 'M' , u 'Male' ),<br/> (u 'F' , u 'Female' ),<br/> )<br/> name = models.CharField(max_length= 60 )<br/> gender = models.CharField(max_length= 2 , choices=GENDER_CHOICES) <br/>
Copy Source | Copy HTML<br/>>>> p = Person(name= "Fred Flinstone" , gender= "M" )<br/>>>> p.save()<br/>>>> p.gender<br/>u 'M' <br/>>>> p.get_gender_display()<br/>u 'Male' <br/>
デフォルト
この引数の値は、デフォルトのフィールド値または呼び出されるオブジェクトです(この場合、呼び出されるオブジェクトは、新しいオブジェクトが作成されるたびに呼び出されます)。
help_text
この引数の値はテキストです(追加の「ヘルプ」)。このフィールドの後にオブジェクトの形式で管理者インターフェイスに表示されます。 オブジェクトに管理フォームがない場合、これはドキュメント化に役立ちます。
primary_key
引数の値がTrueの場合、フィールドはモデルの主キーになります。
モデル内のどのフィールドにもprimary_key = Trueを定義しない場合、Djangoは自動的にIntegerFieldを追加して、モデルにプライマリキーがあるため、プライマリキーを作成するときの標準動作をオーバーライドする場合にのみ、フィールドにprimary_key = Trueを設定できます。
ユニークな
引数の値がTrueの場合、フィールドはデータベーステーブル全体で一意である必要があります。
上記の呼び出しは、頻繁に使用されるフィールド引数の簡単な説明にすぎません。 ここで詳細を調べることができます 。
自動主キー
デフォルトでは、Djangoは各モデルにフィールドを追加します。
Copy Source | Copy HTML<br/>id = models.AutoField(primary_key=True) <br/>
これは自動増分主キーです。
主キーを作成する場合は、フィールドのいずれかでprimary_key = True属性を定義するだけです。 DjangoがField.primary_keyを一意に設定したことを認識した場合、 id列は追加されません。
各モデルには、 primary_key = Trueのフィールドが1つだけ必要です。
詳細なフィールド名
ForeignKey 、 ManyToManyField 、 OneToOneFieldを除く各タイプのフィールドには、オプションの最初の引数-冗長名が含まれます。 この引数が指定されていない場合、Djangoはフィールド属性名を使用して自動的に作成し、アンダースコアをスペースに変換します。
この例では、詳細名は「Person's first name」になります。
Copy Source | Copy HTML<br/>first_name = models.CharField( "Person's first name" , max_length= 30 ) <br/>
この例では、詳細名は「名」になります。
Copy Source | Copy HTML<br/>first_name = models.CharField(max_length= 30 ) <br/>
ForeignKey 、 ManyToManyField 、およびOneToOneFieldでは、モデルが最初の引数である必要があるため、 verbose_name引数が一緒に使用されます。
Copy Source | Copy HTML<br/>poll = models.ForeignKey(Poll, verbose_name= "the related poll" )<br/>sites = models.ManyToManyField(Site, verbose_name= "list of sites" )<br/>place = models.OneToOneField(Place, verbose_name= "related place" ) <br/>
verbose_nameの値を大文字で設定することは慣例ではありません。 Djangoは、必要に応じて最初の文字を自動的に大文字にします。
それだけです:)
Djangoドキュメントの翻訳:モデル。 パート2
Djangoドキュメントの翻訳:モデル。 パート3
Djangoドキュメントの翻訳:モデル。 パート4(最後)