Je viens de commencer à coder dans DRF et j'ai rencontré un problème où je dois chercher à partir d'une clé étrangère.Django Rest Framework Filtrage de champs connexes
J'ai 2 modèles, BookDetails et BookCopies.
BookCopies est référencé BookDetails en tant que clé étrangère.
Maintenant, je veux rechercher BookCopies en utilisant le titre de l'attribut qui est dans le modèle BookDetails.
J'ai utilisé django_rest_framework_filters comme suit mais cela donne une erreur quand je visite 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']
}
Voir
class CopyListAPIView(ListAPIView):
serializer_class = CopyViewSerializer
queryset = BookCopy.active_objects.all()
filter_backends = [DjangoFilterBackend]
filter_class = CopyFilter
sérialiseur
class CopyViewSerializer(ModelSerializer):
class Meta:
model = BookCopy
fields = "__all__"
Erreur trace
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
S'il vous plaît aider. Merci
Pouvez-vous poster votre traceback d'erreur? – Fian
Indiquez également la vue que vous utilisez également? – Linovia
Salut, vraiment désolé j'ai eu un peu de retard pour répondre. J'ai mis à jour la question avec la trace d'erreur et la vue que j'utilise –