-
Field lookups typeを指定しなかった場合はexactになる。 *
- 比較一覧*
- filter(**kwargs)は複数の条件を指定することができる。
-
querysetを実行する方法 *
-
1つだけ取得したい場合はget()
レコードが存在しない場合はModel.DoesNotExistが発生する。 -
offset limit *
Foo.objects.all()[5:10] -
外部キーで参照しているテーブルを条件に加える場合はキーワード名を<外部テーブル名>__<カラム名>__<条件>とする *
default_related_nameは外部キーの参照先のモデルが外部キーが所属しているテーブルのカラムの値でフィルターしたいときに使用するテーブル名 * -
テーブルにあるカラムの値を条件に利用したい場合はF()を利用する
-
cacheされる条件 *
- ORやANDを利用する方法 *
notは~, ANDは&
foo = F00.objects.filter(Q(bar=bar) & Q(hoge=hoge)).get()
-
レコードの複製はpkにNoneを代入する。 *
-
1対1, 多対多の操作 *
-
一度に関連したデータを全て取得するSQLを発行してModelオブジェクトを生成するにはselect_relatedを利用する。
-
<Model名>_setでこのモデルを外部キーにしているレコードを取得することができる。
外部キーにしているField定義でrelated_nameを指定するとそれで取得することができる。 * -
from django.core.exceptions import ObjectDoesNotExist
-
実行されたSQLはconnection.queriesで確認することができる。 *
-
集約関数 *
-
list(queryset)は該当するレコードがない場合は[]が返ってくる。例外は出ない。
-
単にModelを継承したい場合はMeta.proxy = Trueとする *
-
(指定したカラム名のキーと値を持つ)dictを取得したい場合はvalues(*fields)
タプルで取得したい場合はvalues_list(*fields, flat=False) -
model_to_dict(instance, fields=None, exclude=None)はModelをdictに変換する
add_nowがあるdatetimeはスキップされる -
dateやdatetimeの比較はOSのlocaleに影響を受ける
-
USE_TZをTrueにすると日時をDBに保存する際にタイムゾーンがUTCの日時に変換される。
USE_TZがFalseの場合、DBに使用するdatetimeはnativeである必要がある。
nativeとはtzinfoがNoneのdatetimeである。
nativeにするにはdatetime_obj.replace(tzinfo=Node)とする。
awareはtzinfoを持つdatetime -
Custom QuerySet *