Django의 배열 필드/값으로 QuerySet 필터링
queryset
은 수행해야 할 가장 중요하고 재미있는 작업 중 하나입니다.배열/목록 값으로 작업하는 데 익숙한 경우 배열 필드 또는 값으로 작업할 때 쿼리를 최적화하는 방법을 알고 싶을 수 있습니다. 🚀
글쎄, 몇 가지 필터 방법이나 배열 필드 또는 값을 배우자.
배열 값에 대한 in() 메서드
ID 목록이 있다고 가정합니다. 목록에서 id 값과 일치하는 id를 가진 항목만 포함하도록 a
queryset
를 필터링하려고 합니다.ids = [1,4,8,9]
Products.objects.filter(id__in=ids)
이는 SQL에서 동일합니다.
SELECT * FROM products WHERE id IN (1,4,8,9);
어레이 필드
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
및 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을(를) 사용하여 게시된 기사. 무료로 사용해 보세요.
Reference
이 문제에 관하여(Django의 배열 필드/값으로 QuerySet 필터링), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/koladev/filter-queryset-with-array-fieldsvalues-in-django-38ei텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)