djommon/serializers/json: fix missing import and not handled case of new models
This commit is contained in:
parent
ddb023481b
commit
6ec2e2418e
|
@ -1,4 +1,5 @@
|
||||||
import json
|
import json
|
||||||
|
import sys
|
||||||
|
|
||||||
from django.utils import six
|
from django.utils import six
|
||||||
from django.core.serializers.json import Serializer as JSONSerializer
|
from django.core.serializers.json import Serializer as JSONSerializer
|
||||||
|
@ -26,8 +27,12 @@ def Deserializer(stream_or_string, **options):
|
||||||
for obj in objects:
|
for obj in objects:
|
||||||
Model = _get_model(obj['model'])
|
Model = _get_model(obj['model'])
|
||||||
if isinstance(obj['pk'], (tuple, list)):
|
if isinstance(obj['pk'], (tuple, list)):
|
||||||
o = Model.objects.get_by_natural_key(*obj['pk'])
|
try:
|
||||||
obj['pk'] = o.pk
|
o = Model.objects.get_by_natural_key(*obj['pk'])
|
||||||
|
except Model.DoesNotExist:
|
||||||
|
obj['pk'] = None
|
||||||
|
else:
|
||||||
|
obj['pk'] = o.pk
|
||||||
for obj in PythonDeserializer(objects, **options):
|
for obj in PythonDeserializer(objects, **options):
|
||||||
yield obj
|
yield obj
|
||||||
except GeneratorExit:
|
except GeneratorExit:
|
||||||
|
@ -35,3 +40,5 @@ def Deserializer(stream_or_string, **options):
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
# Map to deserializer error
|
# Map to deserializer error
|
||||||
six.reraise(DeserializationError, DeserializationError(e), sys.exc_info()[2])
|
six.reraise(DeserializationError, DeserializationError(e), sys.exc_info()[2])
|
||||||
|
|
||||||
|
|
||||||
|
|
Reference in New Issue