@@ -984,25 +984,17 @@ def sqlmodel_update(
984984 obj : builtins .dict [str , Any ] | BaseModel ,
985985 * ,
986986 update : builtins .dict [str , Any ] | None = None ,
987+ ** model_dump_kwargs ,
987988 ) -> _TSQLModel :
988- use_update = (update or {}).copy ()
989- if isinstance (obj , dict ):
990- for key , value in {** obj , ** use_update }.items ():
991- if key in get_model_fields (self ):
992- setattr (self , key , value )
993- elif isinstance (obj , BaseModel ):
994- for key in get_model_fields (obj ):
995- if key in use_update :
996- value = use_update .pop (key )
997- else :
998- value = getattr (obj , key )
999- setattr (self , key , value )
1000- for remaining_key , value in use_update .items ():
1001- if remaining_key in get_model_fields (self ):
1002- setattr (self , remaining_key , value )
1003- else :
989+ if not (isinstance (obj , dict ) or isinstance (obj , BaseModel )):
1004990 raise ValueError (
1005991 "Can't use sqlmodel_update() with something that "
1006992 f"is not a dict or SQLModel or Pydantic model: { obj } "
1007993 )
994+ if isinstance (obj , BaseModel ):
995+ obj = obj .model_dump (** model_dump_kwargs )
996+ use_update = (update or {}).copy ()
997+ for key , value in {** obj , ** use_update }.items ():
998+ if key in get_model_fields (self ):
999+ setattr (self , key , value )
10081000 return self
0 commit comments