모델에서 데이터를 검색하는 데 약간의 문제가 있습니다. 내 HTML에는 데이터에 대한 여러 필터를 얻는 양식이 있습니다. 예를 들어 품질 및 프리젠 테이션 변수가 있고 사용자가 필터링 할 방법을 선택하고 'key1 = value1 & key2 = value2 형식으로 쿼리를 보냅니다. '그리고 그런 것. 내 문제는 뷰에서 이것을 사용하여 데이터를 필터링하는 방법을 모른다는 것입니다.
쿼리에 형식을 부여하는이 작은 코드가 있습니다.
filt = {'quality':[],'presentation':[], 'color':[]}
quer1 = request.POST.get('value');
print quer1
quer = quer1.split('&')
for i in quer:
val = i.split('=')
filt[val[0]].append(val[1])
이것으로 필터링 할 데이터로 dict를 생성하지만 dict의 변수를 어떻게 얻을 수 있습니까?
내 말은
Products.objects.get(filt)
filt는 비어 있지 않은 목록 만 남긴 변수입니다.
수동으로 만들면 다음과 같을 것이라는 것을 알고 있습니다.
Products.objecs.get(quality__in = filt['quality'], presentation__in = filt['presentation'], color__in = filt[''color])
하지만 사용자가 값에 대한 값을 설정하지 않은 경우 딕셔너리에 빈 목록이되고 이로 인해 검색이 실패하게되므로 이렇게 만들고 싶지 않습니다. 설정되지 않은 속성을 검색하지 않고 null로 검색합니다.
그런데 사용자는 필터에서 하나의 변수에 대해 여러 매개 변수를 설정할 수 있습니다. 즉, 품질 = [1,2]입니다.
미래 독자를위한 답변으로 내 댓글을 게시합니다 (아마도 처음에는 그렇게했을 것입니다).
Django의 필터 호출에 사전을 압축 해제하려면 다음을 수행하십시오.
Product.objects.filter(**filt)
트릭은 사전의 필드가 객체의 필드에 매핑되어야한다는 것입니다. 따라서 값이 목록이면 다음이 작동합니다.
{ "<field_name>__in": [] }
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다