Django 다중 검색 & 필요한 열만 찾기 (필요한 열을 얻는query set) & 다운로드
2038 단어 Django
def get_query_all(dic=None,values=None):
res = oneModel.objects.filter(**dic).values(*values)
return res
다운로드 기능 구현:
obj = get_query_all(dic, header)
buf = BytesIO() # from io import BytesIO
import openpyxl
appeal_wb = openpyxl.Workbook(encoding='utf-8',write_only=True)
ws = appeal_wb.create_sheet()
ws.append(list(header_dic.values()))
for row in obj:
ws.append(list(row.values()))
appeal_wb.save(buf)
file = buf.getvalue()
response = HttpResponse(content_type='application/vnd.ms-excel')
response['Content-Disposition'] = 'attachment;filename=' + 'RebatePool' + '.xls'
response.write(file)
return response
Q를 사용하여 잡다한 조건 검색
con = Q()
q1 = Q()
q1.connector = 'OR'
q1.children.append(('id', 1)) #
q1.children.append(('id', 2))
q1.children.append(('id', 3))
q2 = Q()
q2.connector = 'OR'
q2.children.append(('name', 'xiaoming'))
con.add(q1, 'AND')
con.add(q2, 'AND')
models.Tb1.objects.filter(con).orderby('id')
def get_query_all(dic=None, values=None, limit=None):
'''dic: , (year=2017,year=2018) OR, AND (year month)
values ( )
limit:(skip,skip+limit)'''
con = Q()
if dic:
for k,v in dic.items():
q1 = Q()
q1.connector = 'OR'
if v:
for item in v:
q1.children.append(item)
con.add(q1, 'AND')
if limit:
res = RebatePoolModel.objects.filter(~Q() & con).order_by('-extra__ ')[limit[0]:limit[1]].values(*values)
else:
res = RebatePoolModel.objects.filter(~Q() & con).order_by('-extra__ ').values(*values)
return res
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Django 라우팅 계층 URLconf 작용 및 원리 해석URL 구성(URLconf)은 Django가 지원하는 웹 사이트의 디렉토리와 같습니다.그것의 본질은 URL과 이 URL을 호출할 보기 함수 사이의 맵표입니다. 위의 예제에서는 URL의 값을 캡처하고 위치 매개 변수로...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.