55from decimal import Decimal
66
77from .base import BaseField
8+ from .utils import EMPTY_VALUES , undefined
89
910
1011__all__ = [
@@ -36,16 +37,21 @@ def get_attribute(self, obj):
3637
3738class BooleanField (BaseField ):
3839 def adapt (self , data ):
40+ if data in EMPTY_VALUES or data is undefined :
41+ data = False
42+ return super (BooleanField , self ).adapt (data )
43+
44+ def prepare (self , data ):
3945 return bool (data )
4046
4147
4248class CharField (BaseField ):
43- def adapt (self , data ):
49+ def prepare (self , data ):
4450 return str (data )
4551
4652
4753class DateField (BaseField ):
48- def adapt (self , data ):
54+ def prepare (self , data ):
4955 if isinstance (data , datetime .date ):
5056 return data
5157 elif isinstance (data , str ):
@@ -55,7 +61,7 @@ def adapt(self, data):
5561
5662
5763class DateTimeField (BaseField ):
58- def adapt (self , data ):
64+ def prepare (self , data ):
5965 if isinstance (data , datetime .datetime ):
6066 return data
6167 elif isinstance (data , str ):
@@ -65,7 +71,7 @@ def adapt(self, data):
6571
6672
6773class DecimalField (BaseField ):
68- def adapt (self , data ):
74+ def prepare (self , data ):
6975 return Decimal (data )
7076
7177
@@ -74,17 +80,17 @@ class VerbatimField(BaseField):
7480
7581
7682class FloatField (BaseField ):
77- def adapt (self , data ):
83+ def prepare (self , data ):
7884 return float (data )
7985
8086
8187class IntField (BaseField ):
82- def adapt (self , data ):
88+ def prepare (self , data ):
8389 return int (data )
8490
8591
8692class TimeField (BaseField ):
87- def adapt (self , data ):
93+ def prepare (self , data ):
8894 if isinstance (data , datetime .time ):
8995 return data
9096 elif isinstance (data , str ):
0 commit comments