serialize baserouterproxy correctly
This commit is contained in:
parent
d151bc7888
commit
3fc1bfa5ed
1 changed files with 3 additions and 1 deletions
|
@ -26,11 +26,13 @@ def make_serializable(values: Any):
|
||||||
key: make_serializable(val)
|
key: make_serializable(val)
|
||||||
for key, val in values.items()
|
for key, val in values.items()
|
||||||
}
|
}
|
||||||
|
from c3nav.routing.router import BaseRouterProxy
|
||||||
if isinstance(values, (list, tuple, set, frozenset)):
|
if isinstance(values, (list, tuple, set, frozenset)):
|
||||||
from c3nav.routing.router import BaseRouterProxy
|
|
||||||
if values and isinstance(next(iter(values)), (Model, BaseRouterProxy)):
|
if values and isinstance(next(iter(values)), (Model, BaseRouterProxy)):
|
||||||
return type(values)(val.pk for val in values)
|
return type(values)(val.pk for val in values)
|
||||||
return type(values)(make_serializable(val) for val in values)
|
return type(values)(make_serializable(val) for val in values)
|
||||||
|
if isinstance(values, BaseRouterProxy):
|
||||||
|
return values.pk
|
||||||
if isinstance(values, Promise):
|
if isinstance(values, Promise):
|
||||||
# This is needed for lazy attributes that evaluate to `None` to be serialized properly.
|
# This is needed for lazy attributes that evaluate to `None` to be serialized properly.
|
||||||
# Without this `None` is returned as the string 'None'.
|
# Without this `None` is returned as the string 'None'.
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue