3
3
4
4
import graphene
5
5
6
+ from ..registry import get_global_registry
6
7
from ..utils import import_single_dispatch
7
8
from .types import DictType
8
9
@@ -41,6 +42,7 @@ def convert_serializer_field(field, is_input=True):
41
42
42
43
graphql_type = get_graphene_type_from_serializer_field (field )
43
44
45
+ args = []
44
46
kwargs = {
45
47
'description' : field .help_text ,
46
48
'required' : is_input and field .required ,
@@ -52,14 +54,27 @@ def convert_serializer_field(field, is_input=True):
52
54
kwargs ['of_type' ] = graphql_type [1 ]
53
55
graphql_type = graphql_type [0 ]
54
56
55
- return graphql_type (** kwargs )
57
+ if isinstance (field , serializers .ModelSerializer ):
58
+ if is_input :
59
+ graphql_type = convert_serializer_to_input_type (field .__class__ )
60
+ else :
61
+ global_registry = get_global_registry ()
62
+ field_model = field .Meta .model
63
+ args = [global_registry .get_type_for_model (field_model )]
64
+
65
+ return graphql_type (* args , ** kwargs )
56
66
57
67
58
68
@get_graphene_type_from_serializer_field .register (serializers .Field )
59
69
def convert_serializer_field_to_string (field ):
60
70
return graphene .String
61
71
62
72
73
+ @get_graphene_type_from_serializer_field .register (serializers .ModelSerializer )
74
+ def convert_serializer_to_field (field ):
75
+ return graphene .Field
76
+
77
+
63
78
@get_graphene_type_from_serializer_field .register (serializers .IntegerField )
64
79
def convert_serializer_field_to_int (field ):
65
80
return graphene .Int
0 commit comments