View
def transfer(request):
if request.method == 'POST':
t_form = TransferForm(request.POST, instance=request.user.profile)
if t_form.is_valid():
t_form.save()
messages.success(request, f'Amount sent!')
else:
t_form = TransferForm(instance=request.user.profile)
context = locals()
return render(request, 'transfer.html', context)
Models.py
from django.contrib.auth.models import User
from django.db.models.signals import post_save
class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
bio = models.TextField(max_length=400, default='Hi! I am new :D')
image = models.ImageField(
default='default.png', upload_to='profile_pics')
balance = models.IntegerField(User, default=10)
def __str__(self):
return f'{self.user.username} Profile'```
class Transfer(models.Model):
to_user = models.ForeignKey(User, related_name='receiver', on_delete=models.CASCADE)
from_user = models.ForeignKey(User, related_name='sender', on_delete=models.CASCADE)
amount = models.IntegerField(default=0)
def __str_(self):
return f'{self.to_user.username} Transfer'
def transferred(sender, instance, **kwargs):
Transfer.to_user = User.objects.first()
Transfer.amount = 35
Transfer.amount += Transfer.to_user.profile.balance
Transfer.to_user.save()
post_save.connect(transferred, sender=Transfer)
Form:
class TransferForm(forms.ModelForm):
class Meta:
model = Transfer
fields = ['to_user', 'from_user', 'amount']
What's wrong here? What to do so that when I enter the transfer class fields using TransferForm, the to_user's (who is the user whom im sending the amount) balance field updates with the amount we sent?