from django.db import migrations def backfill_voucher_numbers(apps, schema_editor): Voucher = apps.get_model('accounting', 'Voucher') max_number = ( Voucher.objects.exclude(number__lte=0) .order_by('-number') .values_list('number', flat=True) .first() or 0 ) missing_number_vouchers = Voucher.objects.filter(number__lte=0).order_by('created_at', 'id') next_number = max_number + 1 for voucher in missing_number_vouchers: voucher.number = next_number voucher.save(update_fields=['number']) next_number += 1 class Migration(migrations.Migration): dependencies = [ ('accounting', '0006_treasury_fee_fields'), ] operations = [ migrations.RunPython(backfill_voucher_numbers, migrations.RunPython.noop), ]