@@ -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