File tree Expand file tree Collapse file tree 2 files changed +21
-0
lines changed Expand file tree Collapse file tree 2 files changed +21
-0
lines changed Original file line number Diff line number Diff line change @@ -114,6 +114,8 @@ def __init__(self, default):
114
114
115
115
def set_context (self , serializer_field ):
116
116
self .is_update = serializer_field .parent .instance is not None
117
+ if callable (self .default ) and hasattr (self .default , 'set_context' ):
118
+ self .default .set_context (serializer_field )
117
119
118
120
def __call__ (self ):
119
121
if self .is_update :
Original file line number Diff line number Diff line change @@ -317,6 +317,25 @@ def test_create_only_default_is_not_provided_on_update(self):
317
317
'text' : 'example' ,
318
318
}
319
319
320
+ def test_create_only_default_callable_sets_context (self ):
321
+ """
322
+ CreateOnlyDefault instances with a callable default should set_context
323
+ on the callable if possible
324
+ """
325
+ class TestCallableDefault :
326
+ def set_context (self , serializer_field ):
327
+ self .field = serializer_field
328
+
329
+ def __call__ (self ):
330
+ return "success" if hasattr (self , 'field' ) else "failure"
331
+
332
+ class TestSerializer (serializers .Serializer ):
333
+ context_set = serializers .CharField (default = serializers .CreateOnlyDefault (TestCallableDefault ()))
334
+
335
+ serializer = TestSerializer (data = {})
336
+ assert serializer .is_valid ()
337
+ assert serializer .validated_data ['context_set' ] == 'success'
338
+
320
339
321
340
# Tests for field input and output values.
322
341
# ----------------------------------------
You can’t perform that action at this time.
0 commit comments