... me = models . CharField ( max_length = 200 ) email = models . EmailField () def __str__ ( self ): return self . name class Entry ( models . Model ): blog = models . ForeignKey ( Blog , on_delete = models . CASCADE ) headline = models . CharField ( max ... は、通常のフィールドを保存するのと全く同じように、該当のフィールドに適切なタイプのオブジェクトを割り当てます。以下の例では、 Entry インスタンス entry の blog 属性を更新しています。ここでは、 Entry と Blog の適切なインスタンスが既にデータベースに保存され ... ていると仮定しています(したがって、以下でそれらを取得できます)。 >>> from blog.models import Blog , Entry >>> entry = Entry . objects . get ( pk = 1 ) >>> cheese_blog = Blog . objects . get ( name = "Cheddar Talk" ) >>> entry . ... ... me = models . CharField ( max_length = 200 ) email = models . EmailField () def __str__ ( self ): return self . name class Entry ( models . Model ): blog = models . ForeignKey ( Blog , on_delete = models . CASCADE ) headline = models . CharField ( max ... は、通常のフィールドを保存するのと全く同じように、該当のフィールドに適切なタイプのオブジェクトを割り当てます。以下の例では、 Entry インスタンス entry の blog 属性を更新しています。ここでは、 Entry と Blog の適切なインスタンスが既にデータベースに保存され ... ていると仮定しています(したがって、以下でそれらを取得できます)。 >>> from blog.models import Blog , Entry >>> entry = Entry . objects . get ( pk = 1 ) >>> cheese_blog = Blog . objects . get ( name = "Cheddar Talk" ) >>> entry . ... ... ータベースのクエリを実行します。たとえば、これはデータベースにある全エントリのheadline属性を出力するプログラムです: for e in Entry . objects . all (): print ( e . headline ) メモ: 1つ以上の結果が存在するかどうかを判定したいだけなら、これは使わないでくだ ... を使った方が効率的です。 非同期イテレーション. QuerySet は async for を使ってイテレートすることもできます: async for e in Entry . objects . all (): results . append ( e ) クエリセットの同期的・非同期的イテレータは、同じキャッシュを共有します。 スライ ... にこの理由から count() メソッドを提供しています。 list()。 list() を呼び出すことで、 QuerySet の評価を強制します。たとえば: entry_list = list ( Entry . objects . all ()) bool()。 bool() , or , and または if 文を使用してブール値として QuerySet をテストす ... ... ータベースのクエリを実行します。たとえば、これはデータベースにある全エントリのheadline属性を出力するプログラムです: for e in Entry . objects . all (): print ( e . headline ) メモ: 1つ以上の結果が存在するかどうかを判定したいだけなら、これは使わないでくだ ... を使った方が効率的です。 非同期イテレーション. QuerySet は async for を使ってイテレートすることもできます: async for e in Entry . objects . all (): results . append ( e ) クエリセットの同期的・非同期的イテレータは、同じキャッシュを共有します。 スライ ... にこの理由から count() メソッドを提供しています。 list()。 list() を呼び出すことで、 QuerySet の評価を強制します。たとえば: entry_list = list ( Entry . objects . all ()) bool()。 bool() , or , and または if 文を使用してブール値として QuerySet をテストす ... ... h ルックアップ ¶ 全文検索の一般的な使用方法は、データベースの1つのカラムに対して1つの用語を検索することです。たとえば: >>> Entry . objects . filter ( body_text__search = "Cheese" ) <QuerySet [<Entry: Cheese on Toast recipes>, <Entry: Pizza Recipes>]> ... config = None , weight = None ) [ソース] ¶ 単一のフィールドに対する検索は素晴らしいですが、制約があります。検索対象となる Entry インスタンスは Blog に属しており、 tagline フィールドを持っています。両方のフィールドに対してクエリを行うには、 SearchVect ... or を使用します: >>> from django.contrib.postgres.search import SearchVector >>> Entry . objects . annotate ( ... search = SearchVector ( "body_text" , "blog__tagline" ), ... ) . filter ( search = "Cheese" ) < ... ... h ルックアップ ¶ 全文検索の一般的な使用方法は、データベースの1つのカラムに対して1つの用語を検索することです。たとえば: >>> Entry . objects . filter ( body_text__search = "Cheese" ) <QuerySet [<Entry: Cheese on Toast recipes>, <Entry: Pizza Recipes>]> ... config = None , weight = None ) [ソース] ¶ 単一のフィールドに対する検索は素晴らしいですが、制約があります。検索対象となる Entry インスタンスは Blog に属しており、 tagline フィールドを持っています。両方のフィールドに対してクエリを行うには、 SearchVect ... or を使用します: >>> from django.contrib.postgres.search import SearchVector >>> Entry . objects . annotate ( ... search = SearchVector ( "body_text" , "blog__tagline" ), ... ) . filter ( search = "Cheese" ) < ... ... 性の結果のキャッシュもあります。通常、呼び出し可能でない属性はキャッシュされます。例えば、 例のブログモデル においても: >>> entry = Entry . objects . get ( id = 1 ) >>> entry . blog # Blog object is retrieved at this point >>> entry . blog # cached ver ... sion, no DB access しかし、一般に、呼び出し可能な属性は毎回DBルックアップを引き起こします: >>> entry = Entry . objects . get ( id = 1 ) >>> entry . authors . all () # query performed >>> entry . authors . all () # query per ... あります。カラムに一意の制約を持つことで、これが決して起こらないことが保証されます。 例えば、 例のブログモデル を使うと: >>> entry = Entry . objects . get ( id = 10 ) 上記は以下よりも高速です: >>> entry = Entry . objects . get ( headline = "News Item Ti ... ... 性の結果のキャッシュもあります。通常、呼び出し可能でない属性はキャッシュされます。例えば、 例のブログモデル においても: >>> entry = Entry . objects . get ( id = 1 ) >>> entry . blog # Blog object is retrieved at this point >>> entry . blog # cached ver ... sion, no DB access しかし、一般に、呼び出し可能な属性は毎回DBルックアップを引き起こします: >>> entry = Entry . objects . get ( id = 1 ) >>> entry . authors . all () # query performed >>> entry . authors . all () # query per ... あります。カラムに一意の制約を持つことで、これが決して起こらないことが保証されます。 例えば、 例のブログモデル を使うと: >>> entry = Entry . objects . get ( id = 10 ) 上記は以下よりも高速です: >>> entry = Entry . objects . get ( headline = "News Item Ti ... ... : ForeignKey リレーションの "反対側"。つまり: from django.db import models class Blog ( models . Model ): # ... pass class Entry ( models . Model ): blog = models . ForeignKey ( Blog , on_delete = models . CASCADE , null = True ) 上記の例では、以下のメ ... ソッドがマネージャ blog.entry_set で利用可能です。 ManyToManyField リレーションの両側: class Topping ( models . Model ): # ... pass class Pizza ( models ... ション先オブジェクトのセットに、指定したモデルオブジェクトを追加します。 例: >>> b = Blog . objects . get ( id = 1 ) >>> e = Entry . objects . get ( id = 234 ) >>> b . entry_set . add ( e ) # Associates Entry e with Blog b. 上の例では、 ForeignKey リレー ... ... : ForeignKey リレーションの "反対側"。つまり: from django.db import models class Blog ( models . Model ): # ... pass class Entry ( models . Model ): blog = models . ForeignKey ( Blog , on_delete = models . CASCADE , null = True ) 上記の例では、以下のメ ... ソッドがマネージャ blog.entry_set で利用可能です。 ManyToManyField リレーションの両側: class Topping ( models . Model ): # ... pass class Pizza ( models ... ション先オブジェクトのセットに、指定したモデルオブジェクトを追加します。 例: >>> b = Blog . objects . get ( id = 1 ) >>> e = Entry . objects . get ( id = 234 ) >>> b . entry_set . add ( e ) # Associates Entry e with Blog b. 上の例では、 ForeignKey リレー ... 2026年10月08日