Opened 7 years ago
Closed 7 years ago
#29472 closed Bug (duplicate)
Natural key not serializing for primary_key OneToOneField
Reported by: | Ferd Snidely | Owned by: | nobody |
---|---|---|---|
Component: | Core (Serialization) | Version: | 2.0 |
Severity: | Normal | Keywords: | |
Cc: | Triage Stage: | Unreviewed | |
Has patch: | no | Needs documentation: | no |
Needs tests: | no | Patch needs improvement: | no |
Easy pickings: | no | UI/UX: | no |
Description (last modified by )
Serializing a model using a natural key that has a OneToOneField primary_key or parent_link fails to include the natural_key.
The problem occurs when serializing with use_natural_primary_keys=True,
and use_natural_foreign_keys=True. The parent_link field is not included
in the 'fields' structure in the json format (fails similarly for xml as
well).
Equivalent to this unanswered stackoverflow:
https://stackoverflow.com/questions/28702215/natural-key-serialize-django-model-with-one-to-one-field-as-primary-key
I have an example project at github/fsnidely/serialtest, which has an example model with tests.
An example of the expected serialized model with its natural_key ('thing'):
{ "model": "sandbox.product", "fields": { "thing": [ "F-A" ], "prod_secs": 42, "low_level": -1 } },
What is actually returned by serializers.serialize("json", ...
or python manage.py dumpdata ...
:
{ "model": "sandbox.product", "fields": { "prod_secs": 42, "low_level": -1 } }
Notice that there is no PK or NK ('thing') for the object.
A simple parent model and child model inheriting parent model with a natural_key() is sufficient to reproduce the problem.
This problem appears to have existed in prior versions of Django as the referenced StackOverflow issue is over 3 years old.
Change History (2)
comment:1 by , 7 years ago
Description: | modified (diff) |
---|
comment:2 by , 7 years ago
Resolution: | → duplicate |
---|---|
Status: | new → closed |
Seems to be a duplicate of #24607 as the tests in the sample project pass after the commit for that ticket.