29 lines
1.2 KiB
Python
29 lines
1.2 KiB
Python
|
|
from django.core.management.base import BaseCommand, CommandError
|
|
from django.apps import apps
|
|
|
|
class Command(BaseCommand):
|
|
help = 'Save all instances of the specified model'
|
|
|
|
def add_arguments(self, parser):
|
|
parser.add_argument('app_label', type=str, help='App label of the model (e.g., attendance)')
|
|
parser.add_argument('model_name', type=str, help='Name of the model to save instances for (e.g., Attendance)')
|
|
|
|
def handle(self, *args, **kwargs):
|
|
app_label = kwargs['app_label']
|
|
model_name = kwargs['model_name']
|
|
|
|
try:
|
|
model = apps.get_model(app_label, model_name)
|
|
except LookupError:
|
|
raise CommandError(f"Model '{model_name}' not found in the app '{app_label}'.")
|
|
|
|
try:
|
|
instances = model.objects.all()
|
|
print(f"Saving {len(instances)} instances of '{model_name}' in app '{app_label}'. Please wait.....")
|
|
for instance in instances:
|
|
instance.save()
|
|
self.stdout.write(self.style.SUCCESS(f"All instances of '{model_name}' in app '{app_label}' have been saved."))
|
|
except Exception as e:
|
|
raise CommandError(f"An error occurred while saving instances of '{model_name}' in app '{app_label}': {e}")
|