mirror of
https://github.com/netbox-community/netbox.git
synced 2026-04-28 11:47:35 +02:00
* Fixes #20551: Support quick-add form prefix in automatic slug generation The slug generation logic in `reslug.ts` looks for form fields using hard-coded ID selectors like `#id_slug` and `#id_name`. In quick-add modals, Django applies a `quickadd` prefix to form fields (introduced in #20542), resulting in IDs like `#id_quickadd-slug` and `#id_quickadd-name`. The logic couldn't find these prefixed fields, so automatic slug generation failed silently in quick-add modals. This fix updates the field selectors to try both unprefixed and prefixed patterns using the nullish coalescing operator (`??`), checking for the standard field ID first and falling back to the quickadd-prefixed ID if the standard one isn't found. * Address PR feedback The slug generation logic required updates to support form prefixes like `quickadd`. Python-side changes ensure `SlugField.get_bound_field()` updates the `slug-source` attribute to include the form prefix when present, so JavaScript receives the correct prefixed field ID. `SlugWidget.__init__()` now adds a `slug-field` class to enable selector-based field discovery. On the frontend, `reslug.ts` now uses class selectors (`button.reslug` and `input.slug-field`) instead of ID-based lookups, eliminating the need for fallback logic. The template was updated to use `class="reslug"` instead of `id="reslug"` on the button to avoid ID duplication issues.
This commit is contained in:
@@ -53,6 +53,14 @@ class SlugField(forms.SlugField):
|
||||
|
||||
self.widget.attrs['slug-source'] = slug_source
|
||||
|
||||
def get_bound_field(self, form, field_name):
|
||||
if prefix := form.prefix:
|
||||
slug_source = self.widget.attrs.get('slug-source')
|
||||
if slug_source and not slug_source.startswith(f'{prefix}-'):
|
||||
self.widget.attrs['slug-source'] = f"{prefix}-{slug_source}"
|
||||
|
||||
return super().get_bound_field(form, field_name)
|
||||
|
||||
|
||||
class ColorField(forms.CharField):
|
||||
"""
|
||||
|
||||
Reference in New Issue
Block a user