Skip to content

Commit 7624763

Browse files
committed
Retain model choice form field for models with no admin or no search fields
1 parent 24a0758 commit 7624763

File tree

1 file changed

+13
-6
lines changed

1 file changed

+13
-6
lines changed

djangocms_versioning/forms.py

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,16 +13,18 @@ def optgroups(self, name: str, value: str, attr: dict | None = None):
1313
return [default]
1414

1515

16-
class VersionContentChoiceField(forms.ChoiceField):
16+
class VersionContentChoiceField(forms.ModelChoiceField):
1717
"""Form field used to display a list of grouper instances"""
1818

19-
def __init__(self, *args, model=None, **kwargs):
19+
def __init__(self, *args, model=None, admin_site=None, **kwargs):
2020
self.language = kwargs.pop("language")
2121
self.predefined_label_method = kwargs.pop("option_label_override")
22-
kwargs.setdefault("widget", VersionAutocompleteSelect(
23-
model._meta.get_field(versionables.for_content(model).grouper_field_name),
24-
admin_site=kwargs.pop("admin_site"),
25-
))
22+
if getattr(admin_site._registry.get(model), "search_fields", []):
23+
# If the model is registered in the admin, use the autocomplete widget
24+
kwargs.setdefault("widget", VersionAutocompleteSelect(
25+
model._meta.get_field(versionables.for_content(model).grouper_field_name),
26+
admin_site=admin_site,
27+
))
2628
super().__init__(*args, **kwargs)
2729

2830
def label_from_instance(self, obj):
@@ -42,6 +44,10 @@ def grouper_form_factory(content_model, language=None, admin_site=None):
4244
:param content_model: Content model class
4345
:param language: Language
4446
"""
47+
if admin_site is None:
48+
from django.contrib.admin import site
49+
admin_site = site
50+
4551
versionable = versionables.for_content(content_model)
4652
return type(
4753
content_model.__name__ + "GrouperForm",
@@ -50,6 +56,7 @@ def grouper_form_factory(content_model, language=None, admin_site=None):
5056
"_content_model": content_model,
5157
versionable.grouper_field_name: VersionContentChoiceField(
5258
label=versionable.grouper_model._meta.verbose_name.capitalize(),
59+
queryset=versionable.grouper_model.objects.all(),
5360
option_label_override=versionable.grouper_selector_option_label,
5461
admin_site=admin_site,
5562
model=content_model,

0 commit comments

Comments
 (0)