Djangoの配列フィールド/値を使用してフィルタを設定する


フィルタリングqueryset Djangoで作業するときに行われる最も重要な楽しい仕事の一つです.
配列/リスト値の操作に精通している場合は、配列フィールドまたは値を使用してクエリを最適化する方法を知りたい場合があります.🚀
さて、いくつかのフィルタメソッドや配列のフィールドや値を学びましょう.

配列値のin ()メソッド


IDのリストがあるとします.あなたはフィルタリングするqueryset IDのエントリを持つには、リスト内のID値にマッチします.
ids = [1,4,8,9]

Products.objects.filter(id__in=ids)
これはSQLで等価です.
SELECT * FROM products WHERE id IN (1,4,8,9);

ArrayField


The ArrayField データのリストを格納するためのフィールドです.我々は、別の記事でこの分野に深く潜ります.しかし、ここでは、この分野を使用するモデルの基本的な例があります.
from django.contrib.postgres.fields import ArrayField
from django.db import models

class Product(models.Model):
    name = models.CharField(max_length=255)
    tags = ArrayField(models.CharField(max_length=255), size=10)
すごい!データベースからすべての製品を検索したいとしましょうshoe タグ、またはさらに興味深いshoe and pants タグ.
このため、contains フィルタ.
# Retrieving all products with shoe tag

Product.objects.filter(tags__contains=['shoe'])

# Retrieving all products with shoe and pant tags

Product.objects.filter(tags__contains=['shoe', 'pant'])
そして、それは基本的です.👀
また、などの興味深いフィルタを見つけることができますcontained_by これは contains でも overlap 取得したエントリに少なくとも値が含まれているかどうかをチェックするフィルタ.
記事投稿bloggu.io . 無料でお試しください.