@@ -61,6 +61,7 @@ def __init__(self, default: Any = Undefined, **kwargs: Any) -> None:
6161 primary_key = kwargs .pop ("primary_key" , False )
6262 nullable = kwargs .pop ("nullable" , Undefined )
6363 foreign_key = kwargs .pop ("foreign_key" , Undefined )
64+ foreign_key_kwargs = kwargs .pop ("foreign_key_kwargs" , Undefined )
6465 unique = kwargs .pop ("unique" , False )
6566 index = kwargs .pop ("index" , Undefined )
6667 sa_column = kwargs .pop ("sa_column" , Undefined )
@@ -81,6 +82,7 @@ def __init__(self, default: Any = Undefined, **kwargs: Any) -> None:
8182 self .primary_key = primary_key
8283 self .nullable = nullable
8384 self .foreign_key = foreign_key
85+ self .foreign_key_kwargs = foreign_key_kwargs
8486 self .unique = unique
8587 self .index = index
8688 self .sa_column = sa_column
@@ -143,6 +145,7 @@ def Field(
143145 regex : Optional [str ] = None ,
144146 primary_key : bool = False ,
145147 foreign_key : Optional [Any ] = None ,
148+ foreign_key_kwargs : Optional [Mapping [str , Any ]] = None ,
146149 unique : bool = False ,
147150 nullable : Union [bool , UndefinedType ] = Undefined ,
148151 index : Union [bool , UndefinedType ] = Undefined ,
@@ -174,6 +177,7 @@ def Field(
174177 regex = regex ,
175178 primary_key = primary_key ,
176179 foreign_key = foreign_key ,
180+ foreign_key_kwargs = foreign_key_kwargs ,
177181 unique = unique ,
178182 nullable = nullable ,
179183 index = index ,
@@ -432,9 +436,10 @@ def get_column_from_field(field: ModelField) -> Column: # type: ignore
432436 nullable = field_nullable
433437 args = []
434438 foreign_key = getattr (field .field_info , "foreign_key" , None )
439+ foreign_key_kwargs = getattr (field .field_info , "foreign_key_kwargs" , None )
435440 unique = getattr (field .field_info , "unique" , False )
436441 if foreign_key :
437- args .append (ForeignKey (foreign_key ))
442+ args .append (ForeignKey (foreign_key , ** ( foreign_key_kwargs or dict ()) ))
438443 kwargs = {
439444 "primary_key" : primary_key ,
440445 "nullable" : nullable ,
0 commit comments