🔎

Djangoで配列のデータを配列で検索する方法

2021/12/19に公開

例えば下記のような文字列の配列データがDBにあったとします。

tags:
	{1}
	{2}
	{3}
	{1,2}
	{1,3}
	{2,3}
	{1,2,3}

これを下記の値で検索したいとします。

https://www.xxx.co.jp?tags[]=1

その場合、下記コードで

from django.db.models import Q
from rest_framework import viewsets
from api.models import Test
from api.serializers import TestSerializer

class TestViewSet(viewsets.ModelViewSet):
	queryset = Test.objects.all()
	serializer_class = TestSerializer
	
	def get_queryset(self):
		params = self.request.GET
		return Test.objects.all().filter(
			Q(tags__contains=params.getlist('tags[]'))
		)

結果は下記のとおりです。

tags: 
	{1}
	{1,2}
	{1,3}
	{1,2,3}

以上です。

Discussion