11from typing import Any
22
33import django
4- from django .contrib . admin . views import main
4+ from django .contrib import messages
55from django .contrib .admin .views .main import ERROR_FLAG , PAGE_VAR
66from django .contrib .admin .views .main import ChangeList as BaseChangeList
77from django .contrib .auth .mixins import PermissionRequiredMixin
@@ -23,14 +23,29 @@ def __init__(self, request: HttpRequest, *args: Any, **kwargs: Any) -> None:
2323
2424class DatasetChangeList (ChangeList ):
2525 is_dataset = True
26- search_form_class = DatasetChangeListSearchForm
2726
2827 def __init__ (self , request : HttpRequest , * args : Any , ** kwargs : Any ) -> None :
29- # Monkeypatch SEARCH_VAR and PAGE_VAR for custom datasets
30- main .SEARCH_VAR = f"{ kwargs .get ('model' )._meta .model_name } -q"
31- main .PAGE_VAR = f"{ kwargs .get ('model' )._meta .model_name } -p"
28+ search_var = f"{ kwargs .get ('model' )._meta .model_name } -q"
29+ page_var = f"{ kwargs .get ('model' )._meta .model_name } -p"
30+
31+ _search_form = DatasetChangeListSearchForm (request .GET , search_var = search_var )
32+ if not _search_form .is_valid ():
33+ for error in _search_form .errors .values ():
34+ messages .error (request , ", " .join (error ))
35+
36+ self .dataset_search_query = _search_form .cleaned_data .get (search_var ) or ""
37+
3238 super ().__init__ (request , * args , ** kwargs )
3339
40+ try :
41+ self .page_num = int (request .GET .get (page_var , 1 ))
42+ except ValueError :
43+ self .page_num = 1
44+
45+ def get_queryset (self , request , exclude_parameters = None ):
46+ self .query = self .dataset_search_query
47+ return super ().get_queryset (request , exclude_parameters )
48+
3449
3550class UnfoldModelAdminViewMixin (PermissionRequiredMixin ):
3651 """
0 commit comments