首页 > 解决方案 > 如何在 Django 模型中保存()参数

问题描述

我正在学习 Django,我决定模拟一个 ATM。当我运行时,我的代码工作,它说存款成功,但它没有保存它,原始余额保持不变。这是我所拥有的:

models.py

class Card(models.Model):
    card_number = models.PositiveIntegerField(primary_key=True) 
    #account_number = models.ForeignKey(Account, to_field='account_number',on_delete=models.CASCADE)
    card_name = models.CharField(max_length=30)
    balance = models.PositiveIntegerField() 

    def __str__(self):
        return self.card_name

views.py

def deposit(request):
    if request.method == 'POST':
        user_pin = request.POST.get('Pin')
        user_card_number = request.POST.get('Your Card Number') 
        amount = request.POST.get('Amount')    
            user_balance = Card.objects.get(card_number=user_card_number).balance  
            user_card_name = Card.objects.get(card_number=user_card_number).card_name 

            # performs deposit
            user_balance += int(amount)                
            Card.objects.get(card_number=user_card_number).save()

            messages.success(request, 'Deposit Success! ' + '$'+ amount + ' has been depositted from card: ' + user_card_name)   
        else:
            messages.error(request, 'Card Number or Pin is incorrect')
    return render(request, 'deposit.html')

现在,我尝试阅读 save() 文档并按照教程进行操作,但它们不起作用。那么,如何在存款完成后将新余额保存在我的卡上?谢谢你。

标签: pythondjango

解决方案


每次要访问模型类的属性时,都不需要获取 Card 对象。

你可以做这样的事情

card= Card.objects.get(card_number=user_card_number)
card.balance +=int(amount)
card.save()

推荐阅读