@@ -121,8 +121,6 @@ def __init__(self, default: Any = Undefined, **kwargs: Any) -> None:
121121 sa_column = kwargs .pop ("sa_column" , Undefined )
122122 sa_column_args = kwargs .pop ("sa_column_args" , Undefined )
123123 sa_column_kwargs = kwargs .pop ("sa_column_kwargs" , Undefined )
124- sa_foreign_key_args = kwargs .pop ("sa_foreign_key_args" , Undefined )
125- sa_foreign_key_kwargs = kwargs .pop ("sa_foreign_key_kwargs" , Undefined )
126124 if sa_column is not Undefined :
127125 if sa_column_args is not Undefined :
128126 raise RuntimeError (
@@ -165,6 +163,8 @@ def __init__(self, default: Any = Undefined, **kwargs: Any) -> None:
165163 if ondelete is not Undefined :
166164 if foreign_key is Undefined :
167165 raise RuntimeError ("ondelete can only be used with foreign_key" )
166+ if not isinstance (foreign_key , str ):
167+ raise RuntimeError ("ondelete can only be used with foreign_key given as a string" )
168168 super ().__init__ (default = default , ** kwargs )
169169 self .primary_key = primary_key
170170 self .nullable = nullable
@@ -176,8 +176,6 @@ def __init__(self, default: Any = Undefined, **kwargs: Any) -> None:
176176 self .sa_column = sa_column
177177 self .sa_column_args = sa_column_args
178178 self .sa_column_kwargs = sa_column_kwargs
179- self .sa_foreign_key_args = sa_foreign_key_args
180- self .sa_foreign_key_kwargs = sa_foreign_key_kwargs
181179
182180
183181class RelationshipInfo (Representation ):
@@ -252,8 +250,6 @@ def Field(
252250 sa_type : Union [Type [Any ], UndefinedType ] = Undefined ,
253251 sa_column_args : Union [Sequence [Any ], UndefinedType ] = Undefined ,
254252 sa_column_kwargs : Union [Mapping [str , Any ], UndefinedType ] = Undefined ,
255- sa_foreign_key_args : Union [Sequence [Any ], UndefinedType ] = Undefined ,
256- sa_foreign_key_kwargs : Union [Mapping [str , Any ], UndefinedType ] = Undefined ,
257253 schema_extra : Optional [Dict [str , Any ]] = None ,
258254) -> Any : ...
259255
@@ -390,8 +386,6 @@ def Field(
390386 sa_column : Union [Column , UndefinedType ] = Undefined , # type: ignore
391387 sa_column_args : Union [Sequence [Any ], UndefinedType ] = Undefined ,
392388 sa_column_kwargs : Union [Mapping [str , Any ], UndefinedType ] = Undefined ,
393- sa_foreign_key_args : Union [Sequence [Any ], UndefinedType ] = Undefined ,
394- sa_foreign_key_kwargs : Union [Mapping [str , Any ], UndefinedType ] = Undefined ,
395389 schema_extra : Optional [Dict [str , Any ]] = None ,
396390) -> Any :
397391 current_schema_extra = schema_extra or {}
@@ -430,8 +424,6 @@ def Field(
430424 sa_column = sa_column ,
431425 sa_column_args = sa_column_args ,
432426 sa_column_kwargs = sa_column_kwargs ,
433- sa_foreign_key_args = sa_foreign_key_args ,
434- sa_foreign_key_kwargs = sa_foreign_key_kwargs ,
435427 ** current_schema_extra ,
436428 )
437429 post_init_field_info (field_info )
@@ -740,22 +732,18 @@ def get_column_from_field(field: Any) -> Column: # type: ignore
740732 if unique is Undefined :
741733 unique = False
742734 if foreign_key :
743- if field_info . ondelete == "SET NULL" and not nullable :
744- raise RuntimeError ( ' ondelete= "SET NULL" requires nullable=True' )
745- assert isinstance ( foreign_key , str )
746- fk_args = []
747- fk_kwargs = {}
748- ondelete = getattr ( field_info , " ondelete" , Undefined )
749- if ondelete is not Undefined :
735+ if isinstance ( foreign_key , str ) :
736+ if field_info . ondelete == "SET NULL" and not nullable :
737+ raise RuntimeError ( 'ondelete="SET NULL" requires nullable=True' )
738+ assert isinstance ( foreign_key , str )
739+ ondelete = getattr ( field_info , "ondelete" , Undefined )
740+ if ondelete is Undefined :
741+ ondelete = None
750742 assert isinstance (ondelete , (str , type (None )))
751- fk_kwargs ["ondelete" ] = ondelete
752- sa_foreign_key_args = getattr (field_info , "sa_foreign_key_args" , Undefined )
753- if sa_foreign_key_args is not Undefined :
754- fk_args .extend (cast (Sequence [Any ], sa_foreign_key_args ))
755- sa_foreign_key_kwargs = getattr (field_info , "sa_foreign_key_kwargs" , Undefined )
756- if sa_foreign_key_kwargs is not Undefined :
757- fk_kwargs .update (cast (Dict [Any , Any ], sa_foreign_key_kwargs ))
758- args .append (ForeignKey (foreign_key , * fk_args , ** fk_kwargs ))
743+ args .append (ForeignKey (foreign_key , ondelete = ondelete ))
744+ else :
745+ assert isinstance (foreign_key , ForeignKey )
746+ args .append (foreign_key .copy ())
759747 kwargs = {
760748 "primary_key" : primary_key ,
761749 "nullable" : nullable ,
0 commit comments