Fix circular references in all API resources.
Review Request #7654 — Created Sept. 21, 2015 and submitted — Latest diff uploaded
Once upon a time, I had fixed circular references in the API serialization.
This regressed with the introduction of field limiting.The core problem was that for foreign key and queryset types, we'd just
serialize that field as the list of objects, rather than recursing and asking
each of those to serialize themselves using the current state. Since the list
of expanded fields will always be the same when the encoder tried to serialize
using the global state, we'd hit the circular reference.By asking each of those objects to serialize themselves with the limited list
of expanded fields, we'll only recurse once for each type.
- Set up two review requests which depended on each other. Saw that I could
make changes to their drafts. - Added a new unit test and fixed existing unit tests to test the correct
behavior.