DjangoBackendFilter and filtering by id
I have a very simple filter made using DjangoBackendFilter and Ordering filter. It works with all the query parameters such as ?part_number=12345 but when it comes to the id field it does not work at all, i.e. ?id=12345.
I don't have any list filters yet so I do not expect multiple filter values to work. But I do expect every field to work for single value input. Seems strange that only the id field does not work. I have also tried using ?pk=12345 in the API URL but it does not filter anything either.
views.py
class PartList(generics.ListAPIView):
queryset = Part.objects.all()
serializer_class = PartSerializer
pagination_class = StandardResultsSetPagination
filter_fields = '__all__'
ordering = 'id'
pagers.py
class StandardResultsSetPagination(PageNumberPagination):
page_size = 10
page_size_query_param = 'page_size'
max_page_size = 1000
def get_paginated_response(self, data):
return Response(
'links':
'next': self.get_next_link(),
'previous': self.get_previous_link()
,
'count': self.page.paginator.count,
'total_pages': self.page.paginator.num_pages,
'results': data
)
serializers.py
class PartSerializer(serializers.ModelSerializer):
class Meta:
model = Part
fields = '__all__'
django django-rest-framework
add a comment |
I have a very simple filter made using DjangoBackendFilter and Ordering filter. It works with all the query parameters such as ?part_number=12345 but when it comes to the id field it does not work at all, i.e. ?id=12345.
I don't have any list filters yet so I do not expect multiple filter values to work. But I do expect every field to work for single value input. Seems strange that only the id field does not work. I have also tried using ?pk=12345 in the API URL but it does not filter anything either.
views.py
class PartList(generics.ListAPIView):
queryset = Part.objects.all()
serializer_class = PartSerializer
pagination_class = StandardResultsSetPagination
filter_fields = '__all__'
ordering = 'id'
pagers.py
class StandardResultsSetPagination(PageNumberPagination):
page_size = 10
page_size_query_param = 'page_size'
max_page_size = 1000
def get_paginated_response(self, data):
return Response(
'links':
'next': self.get_next_link(),
'previous': self.get_previous_link()
,
'count': self.page.paginator.count,
'total_pages': self.page.paginator.num_pages,
'results': data
)
serializers.py
class PartSerializer(serializers.ModelSerializer):
class Meta:
model = Part
fields = '__all__'
django django-rest-framework
1
have you defined filter_backend class ?
– Sumeet Kumar
Nov 10 '18 at 11:01
add a comment |
I have a very simple filter made using DjangoBackendFilter and Ordering filter. It works with all the query parameters such as ?part_number=12345 but when it comes to the id field it does not work at all, i.e. ?id=12345.
I don't have any list filters yet so I do not expect multiple filter values to work. But I do expect every field to work for single value input. Seems strange that only the id field does not work. I have also tried using ?pk=12345 in the API URL but it does not filter anything either.
views.py
class PartList(generics.ListAPIView):
queryset = Part.objects.all()
serializer_class = PartSerializer
pagination_class = StandardResultsSetPagination
filter_fields = '__all__'
ordering = 'id'
pagers.py
class StandardResultsSetPagination(PageNumberPagination):
page_size = 10
page_size_query_param = 'page_size'
max_page_size = 1000
def get_paginated_response(self, data):
return Response(
'links':
'next': self.get_next_link(),
'previous': self.get_previous_link()
,
'count': self.page.paginator.count,
'total_pages': self.page.paginator.num_pages,
'results': data
)
serializers.py
class PartSerializer(serializers.ModelSerializer):
class Meta:
model = Part
fields = '__all__'
django django-rest-framework
I have a very simple filter made using DjangoBackendFilter and Ordering filter. It works with all the query parameters such as ?part_number=12345 but when it comes to the id field it does not work at all, i.e. ?id=12345.
I don't have any list filters yet so I do not expect multiple filter values to work. But I do expect every field to work for single value input. Seems strange that only the id field does not work. I have also tried using ?pk=12345 in the API URL but it does not filter anything either.
views.py
class PartList(generics.ListAPIView):
queryset = Part.objects.all()
serializer_class = PartSerializer
pagination_class = StandardResultsSetPagination
filter_fields = '__all__'
ordering = 'id'
pagers.py
class StandardResultsSetPagination(PageNumberPagination):
page_size = 10
page_size_query_param = 'page_size'
max_page_size = 1000
def get_paginated_response(self, data):
return Response(
'links':
'next': self.get_next_link(),
'previous': self.get_previous_link()
,
'count': self.page.paginator.count,
'total_pages': self.page.paginator.num_pages,
'results': data
)
serializers.py
class PartSerializer(serializers.ModelSerializer):
class Meta:
model = Part
fields = '__all__'
django django-rest-framework
django django-rest-framework
asked Nov 10 '18 at 9:19
user3759627
6819
6819
1
have you defined filter_backend class ?
– Sumeet Kumar
Nov 10 '18 at 11:01
add a comment |
1
have you defined filter_backend class ?
– Sumeet Kumar
Nov 10 '18 at 11:01
1
1
have you defined filter_backend class ?
– Sumeet Kumar
Nov 10 '18 at 11:01
have you defined filter_backend class ?
– Sumeet Kumar
Nov 10 '18 at 11:01
add a comment |
1 Answer
1
active
oldest
votes
I figured it out.
The problem was with
filter_fields = '__all__'
This notation includes the id/pk in the serializer but in the filter it does not include id.
So I just replaced it with
filter_fields = [field.name for field in Part._meta.get_fields()]
add a comment |
Your Answer
StackExchange.ifUsing("editor", function ()
StackExchange.using("externalEditor", function ()
StackExchange.using("snippets", function ()
StackExchange.snippets.init();
);
);
, "code-snippets");
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "1"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53237568%2fdjangobackendfilter-and-filtering-by-id%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
I figured it out.
The problem was with
filter_fields = '__all__'
This notation includes the id/pk in the serializer but in the filter it does not include id.
So I just replaced it with
filter_fields = [field.name for field in Part._meta.get_fields()]
add a comment |
I figured it out.
The problem was with
filter_fields = '__all__'
This notation includes the id/pk in the serializer but in the filter it does not include id.
So I just replaced it with
filter_fields = [field.name for field in Part._meta.get_fields()]
add a comment |
I figured it out.
The problem was with
filter_fields = '__all__'
This notation includes the id/pk in the serializer but in the filter it does not include id.
So I just replaced it with
filter_fields = [field.name for field in Part._meta.get_fields()]
I figured it out.
The problem was with
filter_fields = '__all__'
This notation includes the id/pk in the serializer but in the filter it does not include id.
So I just replaced it with
filter_fields = [field.name for field in Part._meta.get_fields()]
answered Nov 12 '18 at 7:39
user3759627
6819
6819
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53237568%2fdjangobackendfilter-and-filtering-by-id%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
1
have you defined filter_backend class ?
– Sumeet Kumar
Nov 10 '18 at 11:01