import random from django.core.management.base import BaseCommand from apps.hadis.models.transmitter import Transmitters class Command(BaseCommand): help = 'Update all transmitters with random generation (1-10) and random madhab' def handle(self, *args, **options): # We use the active madhab choices define in the Transmitters model # Currently active choices in transmitter.py: SHIA, SUNNI, OTHER, UNKNOWN madhab_choices = [ Transmitters.MadhhabChoices.SHIA, Transmitters.MadhhabChoices.SUNNI, Transmitters.MadhhabChoices.OTHER, Transmitters.MadhhabChoices.UNKNOWN, ] # Get all transmitters transmitters = Transmitters.objects.all() count = transmitters.count() if count == 0: self.stdout.write(self.style.WARNING("No Transmitters found in the database.")) return self.stdout.write(self.style.WARNING(f'Starting update for {count} transmitters...')) updated_count = 0 # It's better to iterate through the queryset and save each instance to trigger any save() logic if present for transmitter in transmitters: try: # Assign random generation between 1-10 transmitter.generation = random.randint(1, 10) # Assign random madhab from available choices transmitter.madhhab = random.choice(madhab_choices) # Save the record transmitter.save() updated_count += 1 if updated_count % 100 == 0: self.stdout.write(f'Updated {updated_count}/{count}...') except Exception as e: self.stderr.write(self.style.ERROR(f'Error updating transmitter ID {transmitter.id}: {str(e)}')) self.stdout.write(self.style.SUCCESS(f'Successfully updated {updated_count} transmitters.'))