@@ -18,6 +18,7 @@ class SerializerMutationOptions(MutationOptions):
1818 model_class = None
1919 model_operations = ["create" , "update" ]
2020 serializer_class = None
21+ optional_fields = ()
2122
2223
2324def fields_for_serializer (
@@ -27,6 +28,7 @@ def fields_for_serializer(
2728 is_input = False ,
2829 convert_choices_to_enum = True ,
2930 lookup_field = None ,
31+ optional_fields = (),
3032):
3133 fields = OrderedDict ()
3234 for name , field in serializer .fields .items ():
@@ -44,9 +46,13 @@ def fields_for_serializer(
4446
4547 if is_not_in_only or is_excluded :
4648 continue
49+ is_optional = name in optional_fields
4750
4851 fields [name ] = convert_serializer_field (
49- field , is_input = is_input , convert_choices_to_enum = convert_choices_to_enum
52+ field ,
53+ is_input = is_input ,
54+ convert_choices_to_enum = convert_choices_to_enum ,
55+ force_optional = is_optional ,
5056 )
5157 return fields
5258
@@ -70,6 +76,7 @@ def __init_subclass_with_meta__(
7076 exclude_fields = (),
7177 convert_choices_to_enum = True ,
7278 _meta = None ,
79+ optional_fields = (),
7380 ** options
7481 ):
7582
@@ -95,6 +102,7 @@ def __init_subclass_with_meta__(
95102 is_input = True ,
96103 convert_choices_to_enum = convert_choices_to_enum ,
97104 lookup_field = lookup_field ,
105+ optional_fields = optional_fields ,
98106 )
99107 output_fields = fields_for_serializer (
100108 serializer ,
0 commit comments