Skip to content

Commit 692cf0a

Browse files
committed
feat(serializer): support include or exclude fields from serializer
BREAKING CHANGE: remove `get_dynamic_fields` method support
1 parent a1f986e commit 692cf0a

3 files changed

Lines changed: 12 additions & 7 deletions

File tree

drfexts/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
__version__ = '0.13.0'
1+
__version__ = '0.14.0'

drfexts/viewsets.py

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -143,10 +143,15 @@ def get_serializer(self, *args, **kwargs):
143143
支持动态设置序列化器字段
144144
"""
145145
serializer_class = self.get_serializer_class()
146-
if hasattr(serializer_class, "get_dynamic_fields") and callable(serializer_class.get_dynamic_fields):
147-
dynamic_fields = serializer_class.get_dynamic_fields(self.request)
148-
if dynamic_fields:
149-
kwargs["fields"] = dynamic_fields
146+
if hasattr(serializer_class, "get_included_fields") and callable(serializer_class.get_included_fields):
147+
included_fields = serializer_class.get_included_fields(self.request)
148+
if included_fields:
149+
kwargs["fields"] = included_fields
150+
151+
if hasattr(serializer_class, "get_excluded_fields") and callable(serializer_class.get_excluded_fields):
152+
excluded_fields = serializer_class.get_excluded_fields(self.request)
153+
if excluded_fields:
154+
kwargs["omit"] = excluded_fields
150155

151156
kwargs.setdefault('context', self.get_serializer_context())
152157
return serializer_class(*args, **kwargs)

pyproject.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ force_grid_wrap = 0
3232
use_parentheses = true
3333

3434
[tool.commitizen]
35-
version = "0.13.0"
35+
version = "0.14.0"
3636
tag_format = "v$major.$minor.$patch$prerelease"
3737
version_files = [
3838
"pyproject.toml:version",
@@ -41,7 +41,7 @@ version_files = [
4141

4242
[tool.poetry]
4343
name = "drfexts"
44-
version = "0.13.0"
44+
version = "0.14.0"
4545
readme = "README.md"
4646
description = "Django Restframework Utils"
4747
authors = ["aiden <allaher@icloud.com>"]

0 commit comments

Comments
 (0)