from decimal import Decimal from django.core.management.base import BaseCommand from django.db.models import F from apps.payment.models import Payment, AuthorBalance class Command(BaseCommand): help = 'Fix payment and author balance amount based on payment.data.effective_price_amount' def handle(self, *args, **options): for payment in Payment.objects.exclude(data__effective_price_amount=''): if payment.data.get('effective_price_amount'): payment.amount = Decimal(payment.data.get('effective_price_amount')) payment.save() for ab in AuthorBalance.objects.exclude(payment__amount=F('amount')).select_related('payment'): ab.amount = ab.payment.amount ab.save()