SIGN IN SIGN UP

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