1. ホーム
  2. Django

Django QuerySet マルチテーブル結合/条件付きピッキング/マージ

2022-03-02 11:24:43
  • 複数テーブルの結合
クラスA(models.Model)。
aname = models.CharField()




クラスB(models.Model)。
bname = models.ForeignKey(A)です。




B.objects.filter(bname__aname__contains='searchtitle') # は、2つの '_' .
  • 条件付き選択クエリセット
フィルター手段 =
除外手段 ! =
querySet.distinct() 重複排除
aaa'のような__exact正確な等しい
正確な_iexactイコールは、'aaa'のようなケースを無視します。
__contains '%aaa%'のようなものを含む。
__icontains containsは'%aaa%'のようなケースを無視しますが、sqliteではcontainsはicontainsと同じ効果になります。
__gt より大きい
gteが以上であること
__lt より小さい
以下であること
リスト内に存在する__in
__startswith start with...で始まる。
__istartswithは...で始まります。無視する場合
__endswithは...で始まります。で終わる
__iendswith ends with... endings, ignoring case
__range 範囲は...以内
__year 日付フィールドの年
月 日付フィールドの月
__day 日付フィールドの日数
__isnull=True/False
  • Django で複数の QuerySet をマージするには、常に chain を使用します。
1. 同じモデルに対して複数のQuerySetをマージする方法です。
クエリセット = クエリセット1|クエリセット2




2. 異なるモジュールのデータでもリストにマージできるように、チェーンを使用して実装します。
QuerySet = chain(QuerySet1, QuerySet2)