DjangoのクエリQクエリF

クラスクラス(models.Model):

「」「クラス表」「」

CLASS_NAME = models.IntegerField()#クラス名

class_grade = models.IntegerField()#クラス若いです

男の子のboy_num = models.IntegerField()#番号

girl_num = models.IntegerField()#女の子の数

「」「」「」「」「」「」「」「」「」「」「」「」「」「」「」「」「」「」「」「」「」「」「」「」「」 「」「」「」

django.db.modelsからQ、Fをインポート

「」「」「」「」「」「」「」「」「」「」「」「」「」「」「」「」「」「」「」「」「」「」「」「」「」 「」「」「」

ジャンゴFにクエリは、クエリ内の同じモデルの他のフィールドを参照することができます。

女の子よりも、クラスの男の子をスクリーニングするためのClass.objects.filter(boy_num__ge = F( 'girl_num'))

Fは、私たちはテーブルに私のフィルタ基準はなく、カスタムの定数条件として値を対応するフィールドを得るのを助けることができ、かつダイナミックな比較の結果を達成するために

DjangoはFをサポート(、及びオブジェクトのオブジェクトと加算、減算モジュロF定数との間の()オペレーション)。これは、数値型テーブルの数学演算に基づいていてもよいです

たとえば、次のように10人の少年によってクラス数の女の子よりも男の子の全ての数の数:

Class.objects.filter(boy_num__ge = F( 'girl_num'))更新(boy_num = F( 'boy_num') - 10)。

「」「」「」「」「」「」「」「」「」「」「」「」「」「」「」「」「」「」「」「」「」「」「」「」「」 「」「」「」「」」

声明Djangoのフィルタ条件は、必要に応じて、より複雑なクエリとして、(または文)を実行するためにカンマとにより分離されている、あなたは、クエリQを使用することができます

例:20または女の子20の数未満クラスの大きい男の子のクエリ数

Class.objects.filter(Q(boy_num__gt = 20)| Q(girl_num_lt = 20))

クエリ男の子の数より多いと20は20人以上のクラスの女の子です

クエリQを使用しないでください:Class.objects.filter(boy_num__gt = 20、girl_num__lt = 20)

使用Qクエリ:Class.objects.filter(Q(boy_num__gt = 20)&〜Q(girl_num__lt = 20))

ミックス:Class.objects.filter(Q(boy_num__gt = 20)、girl_num__lt = 20)

Qクエリ:|代表や操作、および操作&代表者、非動作の代表〜。

Qクエリパラメータは、ターゲットキーワードパラメータと混合することができる(クエリ機能を提供またはキーワード引数すべてのパラメータQの  オブジェクト)は「AND」一緒にされています。ある場合ただし、Qの  オブジェクトは、それはすべてのキーワード引数を前に置く必要があります。

延期(「ID」、「名前 」): フェッチオブジェクト、idとnameを除くフィールドがある
( 『ID』、「名前だけ 」): 唯一のオブジェクトIDと名前を取る
ポイントは、まだ他の列を指摘することができる場合、しかし、ないポイントを行う列が取られていないので、それが再びデータベースを照会します

 

Userクラス(models.Model):
名前= models.CharField(MAX_LENGTH = 32)
パスワード= MyCharField(MAX_LENGTH = 32)
の選択肢=((1 '大学')、(2 '正規学部')、(3、。 '専門家')、(4、 'その他'))
教育= models.IntegerField(選択肢=選択肢)

user_obj.education#GETデジタル
固定user_obj.get_education_display()#用法取得選択フィールドに対応するコメント

get_field_display()

おすすめ

転載: www.cnblogs.com/wangqingjiang/p/11811994.html