File tree Expand file tree Collapse file tree 4 files changed +26
-7
lines changed
rest_framework_json_api/schemas Expand file tree Collapse file tree 4 files changed +26
-7
lines changed Original file line number Diff line number Diff line change @@ -53,6 +53,7 @@ any parts of the framework not mentioned in the documentation should generally b
5353* Fixed " id" field being added to / data/ attributes in the OpenAPI schema when it is not rendered there.
5454* Fixed `SerializerMethodResourceRelatedField(many = True )` fields being given
5555 a " reltoone" schema reference instead of " reltomany" .
56+ * Callable field default values are excluded from the OpenAPI schema, as they don' t resolve to YAML data types.
5657
5758# # [6.0.0] - 2022-09-24
5859
Original file line number Diff line number Diff line change @@ -727,7 +727,7 @@ def map_serializer(self, serializer):
727727 schema ["writeOnly" ] = True
728728 if field .allow_null :
729729 schema ["nullable" ] = True
730- if field .default and field .default != empty :
730+ if field .default and field .default != empty and not callable ( field . default ) :
731731 schema ["default" ] = field .default
732732 if field .help_text :
733733 # Ensure django gettext_lazy is rendered correctly
Original file line number Diff line number Diff line change 1+ from rest_framework_json_api .schemas .openapi import AutoSchema
2+ from tests .serializers import CallableDefaultSerializer
3+
4+
5+ class TestAutoSchema :
6+ def test_schema_callable_default (self ):
7+ inspector = AutoSchema ()
8+ result = inspector .map_serializer (CallableDefaultSerializer ())
9+ assert result ["properties" ]["attributes" ]["properties" ]["field" ] == {
10+ "type" : "string" ,
11+ }
Original file line number Diff line number Diff line change 1+ from rest_framework_json_api import serializers
12from rest_framework_json_api .relations import ResourceRelatedField
2- from rest_framework_json_api .serializers import ModelSerializer
33from tests .models import (
44 BasicModel ,
55 ForeignKeySource ,
99)
1010
1111
12- class BasicModelSerializer (ModelSerializer ):
12+ class BasicModelSerializer (serializers . ModelSerializer ):
1313 class Meta :
1414 fields = ("text" ,)
1515 model = BasicModel
1616
1717
18- class ForeignKeySourceSerializer (ModelSerializer ):
18+ class ForeignKeySourceSerializer (serializers . ModelSerializer ):
1919 target = ResourceRelatedField (queryset = ForeignKeyTarget .objects )
2020
2121 class Meta :
2222 model = ForeignKeySource
2323 fields = ("target" ,)
2424
2525
26- class ManyToManySourceSerializer (ModelSerializer ):
26+ class ManyToManySourceSerializer (serializers . ModelSerializer ):
2727 targets = ResourceRelatedField (many = True , queryset = ManyToManyTarget .objects )
2828
2929 class Meta :
3030 model = ManyToManySource
3131 fields = ("targets" ,)
3232
3333
34- class ManyToManyTargetSerializer (ModelSerializer ):
34+ class ManyToManyTargetSerializer (serializers . ModelSerializer ):
3535 class Meta :
3636 model = ManyToManyTarget
3737
3838
39- class ManyToManySourceReadOnlySerializer (ModelSerializer ):
39+ class ManyToManySourceReadOnlySerializer (serializers . ModelSerializer ):
4040 targets = ResourceRelatedField (many = True , read_only = True )
4141
4242 class Meta :
4343 model = ManyToManySource
4444 fields = ("targets" ,)
45+
46+
47+ class CallableDefaultSerializer (serializers .Serializer ):
48+ field = serializers .CharField (default = serializers .CreateOnlyDefault ("default" ))
49+
50+ class Meta :
51+ fields = ("field" ,)
You can’t perform that action at this time.
0 commit comments