Skip to content

Commit d3a7090

Browse files
committed
fix #26
1 parent fd399fb commit d3a7090

File tree

1 file changed

+15
-0
lines changed

1 file changed

+15
-0
lines changed

postgres/__init__.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -824,6 +824,7 @@ def make_DelegatingCaster(postgres):
824824
825825
"""
826826
class DelegatingCaster(CompositeCaster):
827+
827828
def make(self, values):
828829
if self.name not in postgres.model_registry:
829830

@@ -838,6 +839,20 @@ def make(self, values):
838839
instance = ModelSubclass(record)
839840
return instance
840841

842+
def parse(self, s, curs):
843+
if s is None:
844+
return None
845+
846+
tokens = self.tokenize(s)
847+
if len(tokens) != len(self.atttypes):
848+
# The type has changed, re-fetch it from the DB
849+
self.__dict__.update(self._from_db(self.name, curs).__dict__)
850+
851+
values = [ curs.cast(oid, token)
852+
for oid, token in zip(self.atttypes, tokens) ]
853+
854+
return self.make(values)
855+
841856
return DelegatingCaster
842857

843858

0 commit comments

Comments
 (0)