Fixes #11223 - Accept app_label for reindex

This commit is contained in:
Alef Burzmali 2022-12-28 19:49:06 +01:00 committed by Jeremy Stretch
parent b6cd099117
commit ae440c9edf

View File

@ -27,18 +27,29 @@ class Command(BaseCommand):
# Return only indexers for the specified models # Return only indexers for the specified models
else: else:
for label in model_names: for label in model_names:
try: labels = label.lower().split('.')
app_label, model_name = label.lower().split('.')
except ValueError: # Label specifies an exact model
raise CommandError( if len(labels) == 2:
f"Invalid model: {label}. Model names must be in the format <app_label>.<model_name>." app_label, model_name = labels
)
try: try:
idx = registry['search'][f'{app_label}.{model_name}'] idx = registry['search'][f'{app_label}.{model_name}']
indexers[idx.model] = idx indexers[idx.model] = idx
except KeyError: except KeyError:
raise CommandError(f"No indexer registered for {label}") raise CommandError(f"No indexer registered for {label}")
# Label specifies all the models of an app
elif len(labels) == 1:
app_label = labels[0] + '.'
for indexer_label, idx in registry['search'].items():
if indexer_label.startswith(app_label):
indexers[idx.model] = idx
else:
raise CommandError(
f"Invalid model: {label}. Model names must be in the format <app_label> or <app_label>.<model_name>."
)
return indexers return indexers
def handle(self, *model_labels, **kwargs): def handle(self, *model_labels, **kwargs):