방금 DRF에서 코딩을 시작했고 관련 외래 키에서 검색해야하는 문제가 발생했습니다.Django Rest Framework 관련 필드 필터링
저는 BookDetails와 BookCopies의 두 가지 모델이 있습니다.
BookCopies에는 북 키로 참조되는 BookDetails가 있습니다.
이제 BookCeties 모델의 BookDetails 속성 제목을 사용하여 BookCopies를 검색하고 싶습니다.
다음과 같이 django_rest_framework_filters를 사용했지만 http://localhost:8000/book/copy/?book_details__title=abc을 방문하면 오류가 발생합니다.
class BookFilter(FilterSet):
class Meta:
model = BookDetail
fields = {
'title': ['exact', 'in', 'startswith'],
'author': ['exact', 'in', 'startswith'],
'editor': ['exact', 'in', 'startswith'],
'publisher': ['exact', 'in', 'startswith'],
'cl_num': ['exact', 'in', 'startswith']
}
class CopyFilter(FilterSet):
book_details = RelatedFilter(BookFilter, name="title", queryset=BookDetail.objects.all())
class Meta:
model = BookCopy
fields = {
'ref_id': ['exact', 'in', 'startswith']
}
보기
class CopyListAPIView(ListAPIView):
serializer_class = CopyViewSerializer
queryset = BookCopy.active_objects.all()
filter_backends = [DjangoFilterBackend]
filter_class = CopyFilter
시리얼
class CopyViewSerializer(ModelSerializer):
class Meta:
model = BookCopy
fields = "__all__"
KeyError at /book/copy/
'book_details__title'
Request Method: GET
Request URL: http://localhost:8000/book/copy/?book_details__title=abc
Django Version: 1.10.5
Exception Type: KeyError
Exception Value:
'book_details__title'
Exception Location: /Applications/MAMP/htdocs/python/01-virtual-env/lib/python2.7/site-packages/django_filters/filterset.py in qs, line 335
Python Executable: /Applications/MAMP/htdocs/python/01-virtual-env/bin/python
Python Version: 2.7.10
Python Path:
['/Applications/MAMP/htdocs/library-new/services',
'/Applications/MAMP/htdocs/python/01-virtual-env/lib/python27.zip',
'/Applications/MAMP/htdocs/python/01-virtual-env/lib/python2.7',
'/Applications/MAMP/htdocs/python/01-virtual-env/lib/python2.7/plat-darwin',
'/Applications/MAMP/htdocs/python/01-virtual-env/lib/python2.7/plat-mac',
'/Applications/MAMP/htdocs/python/01-virtual-env/lib/python2.7/plat-mac/lib-scriptpackages',
'/Applications/MAMP/htdocs/python/01-virtual-env/lib/python2.7/lib-tk',
'/Applications/MAMP/htdocs/python/01-virtual-env/lib/python2.7/lib-old',
'/Applications/MAMP/htdocs/python/01-virtual-env/lib/python2.7/lib-dynload',
'/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7',
'/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-darwin',
'/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-tk',
'/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac',
'/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac/lib-scriptpackages',
'/Applications/MAMP/htdocs/python/01-virtual-env/lib/python2.7/site-packages',
'/Applications/MAMP/htdocs/python/01-virtual-env/lib/python2.7/site-packages/Django-1.10.5-py2.7.egg',
'/Applications/MAMP/htdocs/python/01-virtual-env/lib/python2.7/site-packages/MySQL_python-1.2.5-py2.7-macosx-10.12-intel.egg']
Server time: Tue, 24 Jan 2017 13:35:36 +0000
이 제발 도와주세요 오류 추적. 고맙습니다.
오류 추적을 게시 할 수 있습니까? – Fian
또한 사용중인보기도 제공 하시겠습니까? – Linovia
안녕하세요, 정말 죄송합니다. 답장을 좀 늦게 보내 셨습니다. 내가 추적을 사용하여 오류 추적 및 질문을 업데이 트 –