... ブジェクトインスタンスを生成できます。 これは例で説明するのが一番わかりやすいでしょう。次のようなモデルがあるとします: class Person ( models . Model ): first_name = models . CharField ( ... ) last_name = models . CharField ( ... ) birth_date = models . D ... ateField ( ... ) このとき、以下のように独自の SQL を実行できます: >>> for p in Person . objects . raw ( "SELECT * FROM myapp_person" ): ... print ( p ) ... John Smith Jane Jones この例はたいしてエキサイティン ... グではありません。これは Person.objects.all() を実行したのと全く同じです。しかしながら、 raw() はその機能を極めて強力なものにする数々のオプションを備えてい ... ... ブジェクトインスタンスを生成できます。 これは例で説明するのが一番わかりやすいでしょう。次のようなモデルがあるとします: class Person ( models . Model ): first_name = models . CharField ( ... ) last_name = models . CharField ( ... ) birth_date = models . D ... ateField ( ... ) このとき、以下のように独自の SQL を実行できます: >>> for p in Person . objects . raw ( "SELECT * FROM myapp_person" ): ... print ( p ) ... John Smith Jane Jones この例はたいしてエキサイティン ... グではありません。これは Person.objects.all() を実行したのと全く同じです。しかしながら、 raw() はその機能を極めて強力なものにする数々のオプションを備えてい ... ... 自動生成された API を提供します。 クエリを作成する を参照してください。 簡単な例 ¶ 次の例では first_name と last_name を持つ Person というモデルを定義しています。 from django.db import models class Person ( models . Model ): first_name = models . CharFie ... モデルの フィールド です。各フィールドはクラスの属性として定義され、各属性はデータベースのカラムに関連付けられます。 上記の Person モデルは以下のようなデータベースのテーブルを作成します: CREATE TABLE "myapp_person" ( "id" bigint NOT NULL PRIMARY KEY GEN ... varchar ( 30 ) NOT NULL , "last_name" varchar ( 30 ) NOT NULL ); 技術的な注意点: By default, the name of the table ( myapp_person ) is automatically derived from model metadata, combining the name of the app ( myapp ) and the lowercase name of the mode ... ... 自動生成された API を提供します。 クエリを作成する を参照してください。 簡単な例 ¶ 次の例では first_name と last_name を持つ Person というモデルを定義しています。 from django.db import models class Person ( models . Model ): first_name = models . CharFie ... モデルの フィールド です。各フィールドはクラスの属性として定義され、各属性はデータベースのカラムに関連付けられます。 上記の Person モデルは以下のようなデータベースのテーブルを作成します: CREATE TABLE "myapp_person" ( "id" bigint NOT NULL PRIMARY KEY GEN ... varchar ( 30 ) NOT NULL , "last_name" varchar ( 30 ) NOT NULL ); 技術的な注意点: By default, the name of the table ( myapp_person ) is automatically derived from model metadata, combining the name of the app ( myapp ) and the lowercase name of the mode ... ... roject.admin_site import custom_admin_site @admin . register ( Author , Reader , Editor , site = custom_admin_site ) class PersonAdmin ( admin . ModelAdmin ): pass このデコレータは、model admin クラスをその __init__() メソッド内で参照する必要がある場合 ... (例: super(PersonAdmin, self).__init__(*args, **kwargs) )には使用できません。代わりに super().__init__(*args, **kwargs) のようにします。 ad ... 場合、 ModelAdmin は優先順位に従います。 from django import forms from django.contrib import admin from myapp.models import Person class PersonForm ( forms . ModelForm ): class Meta : model = Person exclude = [ "name" ] class PersonAdmin ( admin . Model ... ... roject.admin_site import custom_admin_site @admin . register ( Author , Reader , Editor , site = custom_admin_site ) class PersonAdmin ( admin . ModelAdmin ): pass このデコレータは、model admin クラスをその __init__() メソッド内で参照する必要がある場合 ... (例: super(PersonAdmin, self).__init__(*args, **kwargs) )には使用できません。代わりに super().__init__(*args, **kwargs) のようにします。 ad ... 場合、 ModelAdmin は優先順位に従います。 from django import forms from django.contrib import admin from myapp.models import Person class PersonForm ( forms . ModelForm ): class Meta : model = Person exclude = [ "name" ] class PersonAdmin ( admin . Model ... ... る値のタプルです。 ナチュラルキーのデシリアライズ ¶ 次の2つのモデルを考えてみてください。 from django.db import models class Person ( models . Model ): first_name = models . CharField ( max_length = 100 ) last_name = models . CharField ( max_length = 100 ... _name" , ), ] class Book ( models . Model ): name = models . CharField ( max_length = 100 ) author = models . ForeignKey ( Person , on_delete = models . CASCADE ) 通常は、 Book のシリアライズされたデータは、著者 (author) を参照するために整数を使うことに ... リーキーの値を知っていなければなりませんし、しかも、プライマリーキーの値は安定していて予測可能でなければなりません。 しかし、Person にナチュラルキーの処理を追加した場合、フィクスチャはもっとずっと人間によってわかりやすくなります。ナチュラルキーの処理を追 ... ... る値のタプルです。 ナチュラルキーのデシリアライズ ¶ 次の2つのモデルを考えてみてください。 from django.db import models class Person ( models . Model ): first_name = models . CharField ( max_length = 100 ) last_name = models . CharField ( max_length = 100 ... _name" , ), ] class Book ( models . Model ): name = models . CharField ( max_length = 100 ) author = models . ForeignKey ( Person , on_delete = models . CASCADE ) 通常は、 Book のシリアライズされたデータは、著者 (author) を参照するために整数を使うことに ... リーキーの値を知っていなければなりませんし、しかも、プライマリーキーの値は安定していて予測可能でなければなりません。 しかし、Person にナチュラルキーの処理を追加した場合、フィクスチャはもっとずっと人間によってわかりやすくなります。ナチュラルキーの処理を追 ... ... の上で models.Manager() と書いて、クラス変数を定義します。たとえば、次のように書きます。 from django.db import models class Person ( models . Model ): # ... people = models . Manager () このモデル例を使うと、 Person.objects は AttributeError 例外を起こし ... ますが、 Person.people.all() と書けば、すべての Person オブジェクトのリストが得られます。 マネージャのカスタマイズ ¶ Manager ベースクラスを ... orManager ( models . Manager ): def get_queryset ( self ): return super () . get_queryset () . filter ( role = "E" ) class Person ( models . Model ): first_name = models . CharField ( max_length = 50 ) last_name = models . CharField ( max_length = 50 ) ... ... の上で models.Manager() と書いて、クラス変数を定義します。たとえば、次のように書きます。 from django.db import models class Person ( models . Model ): # ... people = models . Manager () このモデル例を使うと、 Person.objects は AttributeError 例外を起こし ... ますが、 Person.people.all() と書けば、すべての Person オブジェクトのリストが得られます。 マネージャのカスタマイズ ¶ Manager ベースクラスを ... orManager ( models . Manager ): def get_queryset ( self ): return super () . get_queryset () . filter ( role = "E" ) class Person ( models . Model ): first_name = models . CharField ( max_length = 50 ) last_name = models . CharField ( max_length = 50 ) ... 2026年10月08日