@@ -1628,20 +1628,31 @@ def _commit(self) -> None:
16281628 for obj , new_id in self .new_object_ids .items ():
16291629 assert new_id is not None
16301630
1631- if self .refetch :
1632- updated = self .new_objects [new_id ]
1633- pydantic_set_fields = obj .__pydantic_fields_set__
1634- for field in updated .__dict__ :
1635- if field == "id" :
1636- continue
1637- obj .__dict__ [field ] = updated .__dict__ [field ]
1638- pydantic_set_fields .add (field )
1639-
16401631 obj .__gel_commit__ (new_id = new_id )
16411632
16421633 if self .refetch :
16431634 self ._apply_refetched_data ()
16441635
1636+ for obj , new_id in self .new_object_ids .items ():
1637+ assert new_id is not None
1638+
1639+ updated = self .new_objects [new_id ]
1640+ pydantic_set_fields = obj .__pydantic_fields_set__
1641+
1642+ for prop in get_pointers (type (obj )):
1643+ if (
1644+ # id is already set and should never change.
1645+ prop .name == "id"
1646+ # prop not refetched
1647+ or prop .name not in updated .__dict__
1648+ # TODO: Refetching links for new objects
1649+ or prop .kind == PointerKind .Link
1650+ ):
1651+ continue
1652+
1653+ obj .__dict__ [prop .name ] = updated .__dict__ [prop .name ]
1654+ pydantic_set_fields .add (prop .name )
1655+
16451656 self ._commit_recursive ()
16461657
16471658 def _commit_recursive (self ) -> None :
@@ -1710,29 +1721,6 @@ def _traverse(obj: GelModel) -> None:
17101721 # see the above comment.
17111722 multi_prop_commit_recursive (linked )
17121723
1713- if (
1714- self .refetch
1715- and obj in self .new_object_ids
1716- and (new_obj_id := self .new_object_ids .get (obj ))
1717- ):
1718- new_obj = self .new_objects .get (new_obj_id )
1719-
1720- # Update new objects with refetched data
1721- for prop in get_pointers (type (obj )):
1722- if (
1723- # prop not refetched
1724- prop .name not in new_obj .__dict__
1725- # TODO: Refetching links for new objects
1726- or prop .kind == PointerKind .Link
1727- ):
1728- continue
1729-
1730- obj .__dict__ [prop .name ] = new_obj .__dict__ [prop .name ]
1731-
1732- if prop .computed :
1733- # Computed props may not have been "set" yet
1734- obj .__pydantic_fields_set__ .add (prop .name )
1735-
17361724 for o in self .objs :
17371725 _traverse (o )
17381726
0 commit comments