Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 2dc5571

Browse files
authored
Ensured that sparse fieldset support formatted field names (#1286)
1 parent 87108d4 commit 2dc5571

File tree

3 files changed

+26
-1
lines changed

3 files changed

+26
-1
lines changed

‎CHANGELOG.md‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ any parts of the framework not mentioned in the documentation should generally b
1919

2020
* Ensured that interpreting `include` query parameter is done in internal Python naming.
2121
This adds full support for using multipart field names for includes while configuring `JSON_API_FORMAT_FIELD_NAMES`.
22+
* Ensured that sparse fieldset fully supports `JSON_API_FORMAT_FIELD_NAMES`.
2223

2324
### Removed
2425

‎rest_framework_json_api/serializers.py‎

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
get_resource_type_from_instance,
2727
get_resource_type_from_model,
2828
get_resource_type_from_serializer,
29+
undo_format_field_name,
2930
)
3031

3132

@@ -89,7 +90,10 @@ def _readable_fields(self):
8990
sparse_fieldset_query_param
9091
)
9192
if sparse_fieldset_value is not None:
92-
sparse_fields = sparse_fieldset_value.split(",")
93+
sparse_fields = [
94+
undo_format_field_name(sparse_field)
95+
for sparse_field in sparse_fieldset_value.split(",")
96+
]
9397
return (
9498
field
9599
for field in readable_fields

‎tests/test_serializers.py‎

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import pytest
22
from django.db import models
3+
from rest_framework.request import Request
34
from rest_framework.utils import model_meta
45

56
from rest_framework_json_api import serializers
@@ -84,3 +85,22 @@ class Meta:
8485
"verified",
8586
"uuid",
8687
]
88+
89+
90+
def test_readable_fields_with_sparse_fields(client, rf, settings):
91+
class TestSerializer(serializers.Serializer):
92+
name = serializers.CharField()
93+
value = serializers.CharField()
94+
multi_part_name = serializers.CharField()
95+
96+
class Meta:
97+
resource_name = "test"
98+
99+
settings.JSON_API_FORMAT_FIELD_NAMES = "camelize"
100+
request = Request(rf.get("/test/", {"fields[test]": "value,multiPartName"}))
101+
context = {"request": request}
102+
serializer = TestSerializer(context=context)
103+
assert [field.field_name for field in serializer._readable_fields] == [
104+
"value",
105+
"multi_part_name",
106+
]

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /