현재 Django를 Django-Rest-Framework와 함께 사용하고 프론트 엔드에서 Ember.js/Ember-data를 사용하는 프로젝트를 작성 중입니다.Django 필드 쿼리 처리
내가 매개 변수가 조회되는 모델의 필드이고, X는 검색 할 값이 형식
http://myurl.com/application/api/model/?parameter=X
내 장고 API에 대한 나의 엠버 응용 프로그램에서 쿼리를 전달하는 찾고 있어요. 느슨하게 이런
뭔가 결과 쿼리를해야
queryset = Model.objects.filter(**request.QUERY_PARAMS.dict())
QUERY_PARAMS.dict은() ** 키워드로 DICT를 변환하는 형식의 사전
{parameter:X}
을 제공 장고 구문입니다
인수는 Django가 예상합니다. 나는 사용자 정의보기 및 사용자 정의 믹스 인을 사용하여 이미이 작업을
queryset = Model.objects.filter(parameter=X)
하지만 구현을 처리하는 내 쿼리가 조금 순진 수 있다는 걱정 이것은 매우 일반적인 나를 친다 :
따라서 위의 라인은 효과적으로이다 무늬.
Django 또는 일부 Django 내부 용 라이브러리가 있는지 궁금합니다. 내 사용자 지정 쿼리 세트 코드없이 이러한 비교적 일반적인 쿼리를 처리 할 수 있을지 완전히 이해하지 못하고 있습니까?
올바른 방향의 모든 포인터는 진심으로 감사 할 것입니다.
스티브 케인
편집 :
이 정수 querys을 처리하는 내 사용자 정의보기에서 내 기본 방법 촬영def get_integer_queryset(self, query, queryset):
#stringify the first entry in query.keys (query is request.QUERY_PARAMS)
query_key = str(query.keys()[0])
#split the string into individual strings since the request object dict
#contains only a string of numbers and not an actual array (see below)
#query = {'parameter':'1,2,3,4'} becomes {'parameter':['1','2','3','4']}
query_values = query.get(query_key, None).split(",")
#construct two dicts. One handles integers and the other handles "null"
#all the code below is required because Django does not seem to handle "null"
#as a valid query to a field that is type "integer"
#as a side note, I think this is poor and create annoying work...i would love
#to be wrong here
#the Q objects are required in order to compose a query of both integers and
#the string "null"
query_vals_no_null = {query_key+"__in": []}
optional_null_dict = {}
for value in query_values:
if value == "null" or value == "None":
optional_null_dict[query_key+"__isnull"] = True
else:
query_vals_no_null[query_key+"__in"].append(value)
return queryset.filter( Q(**query_vals_no_null) |
Q(**optional_null_dict) )
. 나는 무슨 일이 일어나고 있는지 명확히하기 위해 주석을 달았다. 이것이 도움이되는지 또는 익숙한/끔찍한/굉장한/다소 가벼운 것처럼 보이는지 알려주십시오.
스티브
이것은 django의 이전 admin 파일 시스템과 비슷합니다. 최근에는 특정 매개 변수 만 쿼리 할 수 있도록 검증을 추가했습니다. 관심이 있거나 관심이 없을 수도 있습니다 (단순히 입력과 VALID_PARAM_KEYS 목록 비교). –
Steve the django-rest-framework 커뮤니티는 stackoverflow (좋든 나쁘 든)보다는 google 그룹에 사는 것처럼 보입니다. 난 당신이 위에서 언급 한 것처럼 사용자 지정 쿼리 로직을 아직 할 수 없지만 django-rest-framework에 대한 v1.0 ember-data 어댑터를 완료 했으므로 견고한 백엔드 응답을 얻은 후 후속 작업을하고 싶습니다. 해야만하는 것처럼 보입니다. https://groups.google.com/forum/?fromgroups#!forum/django-rest-framework –
조회 처리 방법을 보여주기 위해 내보기에서 메소드 스 니펫을 추가했습니다. 이 메서드는 "정수"형식의 필드에 대한 쿼리에만 적용됩니다. 관련 필드에 대한 작업은 관련 필드의 참조가 정수 (일반적으로 PK 임) 인 경우에만 수행됩니다. – stevekane