77
88from piccolo .columns .base import Column , OnDelete , OnUpdate , ForeignKeyMeta
99from piccolo .columns .operators .string import ConcatPostgres , ConcatSQLite
10- from piccolo .custom_types import UUIDDefault
10+ from piccolo .custom_types import (
11+ DateDefault ,
12+ TimeDefault ,
13+ TimestampDefault ,
14+ UUIDDefault ,
15+ )
1116from piccolo .querystring import Unquoted , QueryString
1217
1318if t .TYPE_CHECKING :
@@ -120,7 +125,9 @@ class Varchar(Column):
120125 value_type = str
121126 concat_delegate : ConcatDelegate = ConcatDelegate ()
122127
123- def __init__ (self , length : int = 255 , default : str = "" , ** kwargs ) -> None :
128+ def __init__ (
129+ self , length : int = 255 , default : t .Union [str , None ] = "" , ** kwargs
130+ ) -> None :
124131 self .length = length
125132 self .default = default
126133 kwargs .update ({"length" : length , "default" : default })
@@ -168,7 +175,7 @@ class Text(Column):
168175 value_type = str
169176 concat_delegate : ConcatDelegate = ConcatDelegate ()
170177
171- def __init__ (self , default : str = "" , ** kwargs ) -> None :
178+ def __init__ (self , default : t . Union [ str , None ] = "" , ** kwargs ) -> None :
172179 self .default = default
173180 super ().__init__ (** kwargs )
174181
@@ -205,7 +212,7 @@ class Integer(Column):
205212
206213 math_delegate = MathDelegate ()
207214
208- def __init__ (self , default : int = None , ** kwargs ) -> None :
215+ def __init__ (self , default : t . Union [ str , None ] = 0 , ** kwargs ) -> None :
209216 self .default = default
210217 kwargs .update ({"default" : default })
211218 super ().__init__ (** kwargs )
@@ -351,7 +358,9 @@ class Timestamp(Column):
351358
352359 value_type = datetime
353360
354- def __init__ (self , default : TimestampArg = None , ** kwargs ) -> None :
361+ def __init__ (
362+ self , default : TimestampArg = TimestampDefault .now , ** kwargs
363+ ) -> None :
355364 self .default = default
356365 kwargs .update ({"default" : default })
357366 super ().__init__ (** kwargs )
@@ -360,7 +369,7 @@ def __init__(self, default: TimestampArg = None, **kwargs) -> None:
360369class Date (Column ):
361370 value_type = date
362371
363- def __init__ (self , default : DateArg = None , ** kwargs ) -> None :
372+ def __init__ (self , default : DateArg = DateDefault . now , ** kwargs ) -> None :
364373 self .default = default
365374 kwargs .update ({"default" : default })
366375 super ().__init__ (** kwargs )
@@ -369,7 +378,7 @@ def __init__(self, default: DateArg = None, **kwargs) -> None:
369378class Time (Column ):
370379 value_type = time
371380
372- def __init__ (self , default : TimeArg = None , ** kwargs ) -> None :
381+ def __init__ (self , default : TimeArg = TimeDefault . now , ** kwargs ) -> None :
373382 self .default = default
374383 kwargs .update ({"default" : default })
375384 super ().__init__ (** kwargs )
@@ -503,6 +512,8 @@ class ForeignKey(Integer):
503512 def __init__ (
504513 self ,
505514 references : t .Union [t .Type [Table ], str ],
515+ default : t .Union [int , None ] = None ,
516+ null : bool = True ,
506517 on_delete : OnDelete = OnDelete .cascade ,
507518 on_update : OnUpdate = OnUpdate .cascade ,
508519 ** kwargs ,
@@ -522,7 +533,7 @@ def __init__(
522533 "on_update" : on_update ,
523534 }
524535 )
525- super ().__init__ (** kwargs )
536+ super ().__init__ (default = default , null = null , ** kwargs )
526537
527538 if t .TYPE_CHECKING :
528539 # This is here just for type inference - the actual value is set by
0 commit comments