Scope serializer resolvers per-app and drop default discovery path
Address review feedback on #22253:
- Registry stores resolvers as {app_label: resolver} dict instead of a
flat list, so each app can only register a resolver for its own models.
- register_serializer_resolver() now takes (app_label, resolver) and
get_serializer_for_model() only consults the resolver registered for
the model's own app.
- Remove 'serializer_resolver' from DEFAULT_RESOURCE_PATHS so this niche
resource is loaded only when a plugin explicitly defines it. The
PluginConfig.ready() path imports the configured path directly and
registers it under self.label.
- Update tests for the new per-app scoping; verify a resolver registered
for one app does not affect lookups in another.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> A
Arthur committed
97be961df7596e91f7fa48558a165faade4e673d
Parent: ff26cbd
Committed by Jeremy Stretch <jstretch@netboxlabs.com>
on 5/22/2026, 6:12:17 PM