* refactor(forms): Add GenericObjectChoiceField Replace separate scope_type/scope and parent_object_type/parent field pairs with unified GenericObjectChoiceField. Introduce GenericObjectFormMixin to handle GFK descriptor initialization and assignment. This removes redundant HTMX/queryset setup logic from ScopedForm, VLANGroupForm, and ServiceForm by delegating GFK presentation to a single reusable field and mixin pair. Field query param references now use `$scope_object_id` instead of `$scope` to match the subwidget name. Fixes #19821 * fix(forms): Skip validation on HTMX bulk-edit dependent field refresh Render bulk-edit form unbound when an HTMX request changes a dependent field (e.g. content type) without clicking Apply. This prevents validation errors from surfacing before the user submits. Cache ContentType lookups in GenericObjectChoiceField and sync widget references before setting queryset to ensure choices land on the rendered subwidget. * fix(ipam): Update scope query params for GenericObjectChoiceField Change available-prefix Add links to use `scope_content_type` and `scope_object_id` query parameters instead of `scope_type` and `scope`. This aligns with the GenericObjectChoiceField subwidget naming introduced in the earlier refactor. * refactor(models): Simplify GFK handling in clone_fields Replace `scope_type`/`scope_id` pairs with bare `scope` GFK names in clone_fields across models. Update CloningMixin to emit GFK subwidget parameters (`scope_content_type`, `scope_object_id`) directly when a GenericForeignKey appears in clone_fields. * Update pre-populated links --------- Co-authored-by: Jeremy Stretch <jstretch@netboxlabs.com> |
||
|---|---|---|
| .. | ||
| __init__.py | ||
| panels.py | ||