File tree 4 files changed +26
-7
lines changed
rest_framework_json_api/schemas
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
53
53
* Fixed " id" field being added to / data/ attributes in the OpenAPI schema when it is not rendered there.
54
54
* Fixed `SerializerMethodResourceRelatedField(many = True )` fields being given
55
55
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.
56
57
57
58
# # [6.0.0] - 2022-09-24
58
59
Original file line number Diff line number Diff line change @@ -727,7 +727,7 @@ def map_serializer(self, serializer):
727
727
schema ["writeOnly" ] = True
728
728
if field .allow_null :
729
729
schema ["nullable" ] = True
730
- if field .default and field .default != empty :
730
+ if field .default and field .default != empty and not callable ( field . default ) :
731
731
schema ["default" ] = field .default
732
732
if field .help_text :
733
733
# 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
1
2
from rest_framework_json_api .relations import ResourceRelatedField
2
- from rest_framework_json_api .serializers import ModelSerializer
3
3
from tests .models import (
4
4
BasicModel ,
5
5
ForeignKeySource ,
9
9
)
10
10
11
11
12
- class BasicModelSerializer (ModelSerializer ):
12
+ class BasicModelSerializer (serializers . ModelSerializer ):
13
13
class Meta :
14
14
fields = ("text" ,)
15
15
model = BasicModel
16
16
17
17
18
- class ForeignKeySourceSerializer (ModelSerializer ):
18
+ class ForeignKeySourceSerializer (serializers . ModelSerializer ):
19
19
target = ResourceRelatedField (queryset = ForeignKeyTarget .objects )
20
20
21
21
class Meta :
22
22
model = ForeignKeySource
23
23
fields = ("target" ,)
24
24
25
25
26
- class ManyToManySourceSerializer (ModelSerializer ):
26
+ class ManyToManySourceSerializer (serializers . ModelSerializer ):
27
27
targets = ResourceRelatedField (many = True , queryset = ManyToManyTarget .objects )
28
28
29
29
class Meta :
30
30
model = ManyToManySource
31
31
fields = ("targets" ,)
32
32
33
33
34
- class ManyToManyTargetSerializer (ModelSerializer ):
34
+ class ManyToManyTargetSerializer (serializers . ModelSerializer ):
35
35
class Meta :
36
36
model = ManyToManyTarget
37
37
38
38
39
- class ManyToManySourceReadOnlySerializer (ModelSerializer ):
39
+ class ManyToManySourceReadOnlySerializer (serializers . ModelSerializer ):
40
40
targets = ResourceRelatedField (many = True , read_only = True )
41
41
42
42
class Meta :
43
43
model = ManyToManySource
44
44
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