Skip to content

Commit 3d67219

Browse files
committed
chore: read_only 필드에서는 enum 관련 처리를 하지 않도록 최적화
1 parent 1f27fd7 commit 3d67219

File tree

1 file changed

+8
-8
lines changed

1 file changed

+8
-8
lines changed

app/core/viewset/json_schema_viewset.py

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -67,19 +67,19 @@ def get_json_schema(self) -> dict:
6767
if field.name not in result["schema"]["properties"] or field.name not in ser_fields:
6868
continue
6969

70+
serializer_field = ser_fields[field.name]
71+
if serializer_field.read_only:
72+
continue
73+
7074
if isinstance(field, ForeignKey):
71-
if not (s_field := typing.cast(serializers.PrimaryKeyRelatedField | None, ser_fields[field.name])):
75+
if not (s_field := typing.cast(serializers.PrimaryKeyRelatedField | None, serializer_field)):
7276
continue
73-
e_values_qs = field.remote_field.model.objects if s_field.read_only else s_field.get_queryset()
74-
e_values = self.get_enum_values(e_values_qs, field.null)
77+
e_values = self.get_enum_values(s_field.get_queryset(), field.null)
7578
result["schema"]["properties"][field.name]["oneOf"] = e_values
7679
elif isinstance(field, ManyToManyField):
77-
if not (s_field := typing.cast(serializers.ManyRelatedField | None, ser_fields[field.name])):
80+
if not (s_field := typing.cast(serializers.ManyRelatedField | None, serializer_field)):
7881
continue
79-
e_values_qs = (
80-
field.remote_field.model.objects if s_field.read_only else s_field.child_relation.get_queryset()
81-
)
82-
e_values = self.get_enum_values(e_values_qs, False)
82+
e_values = self.get_enum_values(s_field.child_relation.get_queryset(), False)
8383
result["schema"]["properties"][field.name]["items"]["oneOf"] = e_values
8484
result["schema"]["properties"][field.name]["uniqueItems"] = True
8585
self.set_ui_schema(result["ui_schema"], field.name, {"ui:field": "m2m_select"})

0 commit comments

Comments
 (0)