#3390: Deserializer cannot handle circular and forward references to object
instances
--------------------------------------------------------------------------+-
Reporter: russellm |
Owner: jacob
Status: new |
Component: Serialization
Version: SVN |
Resolution:
Keywords: JSON deferrable deserialization circular forward reference |
Stage: Design decision needed
Has_patch: 1 |
Needs_docs: 0
Needs_tests: 0 |
Needs_better_patch: 1
--------------------------------------------------------------------------+-
Comment (by Michael Radziej <[EMAIL PROTECTED]>):
the tests fail in a strange way here with the postgresql backend. It looks
a bit weird, perhaps better check for yourself before you invest too many
thoughts.
{{{
======================================================================
FAIL: Doctest: modeltests.serializers.models.__test__.API_TESTS
----------------------------------------------------------------------
Traceback (most recent call last):
File "/home/mir/lib/python/django/test/doctest.py", line 2156, in
runTest
raise self.failureException(self.format_failure(new.getvalue()))
AssertionError: Failed doctest test for
modeltests.serializers.models.__test__.API_TESTS
File "/home/mir/src/triage/tests/modeltests/serializers/models.py", line
unknown line number, in API_TESTS
----------------------------------------------------------------------
File "/home/mir/src/triage/tests/modeltests/serializers/models.py", line
?, in modeltests.serializers.models.__test__.API_TESTS
Failed example:
for obj in serializers.deserialize("json", json):
obj.save()
Exception raised:
Traceback (most recent call last):
File "/home/mir/lib/python/django/test/doctest.py", line 1243, in
__run
compileflags, 1) in test.globs
File "<doctest
modeltests.serializers.models.__test__.API_TESTS[31]>", line 2, in ?
obj.save()
File "/home/mir/lib/python/django/core/serializers/base.py", line
165, in save
setattr(self.object, accessor_name, object_list)
File "/home/mir/lib/python/django/db/models/fields/related.py", line
460, in __set__
manager.add(*value)
File "/home/mir/lib/python/django/db/models/fields/related.py", line
285, in add
self._add_items(self.source_col_name, self.target_col_name, *objs)
File "/home/mir/lib/python/django/db/models/fields/related.py", line
327, in _add_items
raise ValueError, "objects to add() must be %s instances" %
self.model._meta.object_name
ValueError: objects to add() must be Category instances
----------------------------------------------------------------------
File "/home/mir/src/triage/tests/modeltests/serializers/models.py", line
?, in modeltests.serializers.models.__test__.API_TESTS
Failed example:
for obj in serializers.deserialize("json", json):
obj.save()
Exception raised:
Traceback (most recent call last):
File "/home/mir/lib/python/django/test/doctest.py", line 1243, in
__run
compileflags, 1) in test.globs
File "<doctest
modeltests.serializers.models.__test__.API_TESTS[37]>", line 2, in ?
obj.save()
File "/home/mir/lib/python/django/core/serializers/base.py", line
165, in save
setattr(self.object, accessor_name, object_list)
File "/home/mir/lib/python/django/db/models/fields/related.py", line
460, in __set__
manager.add(*value)
File "/home/mir/lib/python/django/db/models/fields/related.py", line
285, in add
self._add_items(self.source_col_name, self.target_col_name, *objs)
File "/home/mir/lib/python/django/db/models/fields/related.py", line
327, in _add_items
raise ValueError, "objects to add() must be %s instances" %
self.model._meta.object_name
ValueError: objects to add() must be Category instances
----------------------------------------------------------------------
File "/home/mir/src/triage/tests/modeltests/serializers/models.py", line
?, in modeltests.serializers.models.__test__.API_TESTS
Failed example:
transaction.commit()
Exception raised:
Traceback (most recent call last):
File "/home/mir/lib/python/django/test/doctest.py", line 1243, in
__run
compileflags, 1) in test.globs
File "<doctest
modeltests.serializers.models.__test__.API_TESTS[38]>", line 1, in ?
transaction.commit()
File "/home/mir/lib/python/django/db/transaction.py", line 153, in
commit
connection._commit()
File "/home/mir/lib/python/django/db/backends/postgresql/base.py",
line 86, in _commit
return self.connection.commit()
DatabaseError: {<cursor object at 0xb721b390>: 'FEHLER:
Einf\xc3\xbcgen oder Aktualisieren in Tabelle
\xc2\xbbserializers_article\xc2\xab verletzt Fremdschl\xc3\xbcssel-
Constraint \xc2\xbbauthor_id_refs_id_8fd3731\xc2\xab\nDETAIL:
Schl\xc3\xbcssel (author_id)=(4) ist nicht in Tabelle
\xc2\xbbserializers_author\xc2\xab vorhanden.\n'}
----------------------------------------------------------------------
File "/home/mir/src/triage/tests/modeltests/serializers/models.py", line
?, in modeltests.serializers.models.__test__.API_TESTS
Failed example:
transaction.leave_transaction_management()
Exception raised:
Traceback (most recent call last):
File "/home/mir/lib/python/django/test/doctest.py", line 1243, in
__run
compileflags, 1) in test.globs
File "<doctest
modeltests.serializers.models.__test__.API_TESTS[39]>", line 1, in ?
transaction.leave_transaction_management()
File "/home/mir/lib/python/django/db/transaction.py", line 70, in
leave_transaction_management
raise TransactionManagementError("Transaction managed block ended
with pending COMMIT/ROLLBACK")
TransactionManagementError: Transaction managed block ended with
pending COMMIT/ROLLBACK
----------------------------------------------------------------------
File "/home/mir/src/triage/tests/modeltests/serializers/models.py", line
?, in modeltests.serializers.models.__test__.API_TESTS
Failed example:
article = Article.objects.get(pk=3)
Exception raised:
Traceback (most recent call last):
File "/home/mir/lib/python/django/test/doctest.py", line 1243, in
__run
compileflags, 1) in test.globs
File "<doctest
modeltests.serializers.models.__test__.API_TESTS[40]>", line 1, in ?
article = Article.objects.get(pk=3)
File "/home/mir/lib/python/django/db/models/manager.py", line 73, in
get
return self.get_query_set().get(*args, **kwargs)
File "/home/mir/lib/python/django/db/models/query.py", line 226, in
get
raise self.model.DoesNotExist, "%s matching query does not exist."
% self.model._meta.object_name
DoesNotExist: Article matching query does not exist.
----------------------------------------------------------------------
File "/home/mir/src/triage/tests/modeltests/serializers/models.py", line
?, in modeltests.serializers.models.__test__.API_TESTS
Failed example:
article
Exception raised:
Traceback (most recent call last):
File "/home/mir/lib/python/django/test/doctest.py", line 1243, in
__run
compileflags, 1) in test.globs
File "<doctest
modeltests.serializers.models.__test__.API_TESTS[41]>", line 1, in ?
article
NameError: name 'article' is not defined
----------------------------------------------------------------------
File "/home/mir/src/triage/tests/modeltests/serializers/models.py", line
?, in modeltests.serializers.models.__test__.API_TESTS
Failed example:
article.categories.all()
Exception raised:
Traceback (most recent call last):
File "/home/mir/lib/python/django/test/doctest.py", line 1243, in
__run
compileflags, 1) in test.globs
File "<doctest
modeltests.serializers.models.__test__.API_TESTS[42]>", line 1, in ?
article.categories.all()
NameError: name 'article' is not defined
----------------------------------------------------------------------
File "/home/mir/src/triage/tests/modeltests/serializers/models.py", line
?, in modeltests.serializers.models.__test__.API_TESTS
Failed example:
article.author
Exception raised:
Traceback (most recent call last):
File "/home/mir/lib/python/django/test/doctest.py", line 1243, in
__run
compileflags, 1) in test.globs
File "<doctest
modeltests.serializers.models.__test__.API_TESTS[43]>", line 1, in ?
article.author
NameError: name 'article' is not defined
}}}
--
Ticket URL: <http://code.djangoproject.com/ticket/3390#comment:1>
Django Code <http://code.djangoproject.com/>
The web framework for perfectionists with deadlines
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Django updates" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at
http://groups.google.com/group/django-updates?hl=en
-~----------~----~----~----~------~----~------~--~---