为什么这行代码
withdraw.investment.basic_investment_return -= withdraw.basic_withdraw_amount
抛出此错误
'NoneType' object has no attribute 'basic_investment_return'
@login_required
def create_withdrawal_view(request):
if request.method == 'POST':
basic_withdraw_form = BasicWithdrawalForm(request.POST)
if basic_withdraw_form.is_valid():
withdraw = basic_withdraw_form.save()
withdraw.investment.basic_investment_return -= withdraw.basic_withdraw_amount
print(withdraw.investment.basic_investment_return)
withdraw.save()
messages.success(request, 'your withdrawal of {} is successfull '.format(withdraw.basic_withdraw_amount))
else:
messages.success(request, 'your withdrawal of {} is unsuccessfull '.format(withdraw.basic_withdraw_amount))
else:
basic_withdraw_form = BasicWithdrawalForm()
context = {'basic_withdraw_form': basic_withdraw_form}
return render(request, 'create-basic-withdrawal.html', context)
class Investment(models.Model):
basic_investment_return = models.IntegerField(default=0, null=True, blank=True)
class Withdraw(models.Model):
investment = models.ForeignKey(Investment, on_delete=models.CASCADE, null=True)
basic_withdraw_amount = models.IntegerField(default=0, null=True, blank=True)
class BasicInvestmentForm(forms.ModelForm):
class Meta:
model = Investment
fields = ['basic_deposit_amount']
class BasicWithdrawalForm(forms.ModelForm):
class Meta:
model = Withdraw
fields = ['basic_withdraw_amount']
您正在添加非模型字段basic_deposit_amount
无法在模型中看到
class BasicInvestmentForm(forms.ModelForm):
class Meta:
model = Investment
fields = ['basic_deposit_amount']
在我看来,当你尝试在控制台上打印这两个值时,你可能会有撤回或投资值,因为这肯定会让你知道哪个值是none。
@login_required
def create_withdrawal_view(request):
if request.method == 'POST':
basic_withdraw_form = BasicWithdrawalForm(request.POST)
if basic_withdraw_form.is_valid():
withdraw = basic_withdraw_form.save()
if withdraw and withdraw.investment is not None:
withdraw.investment.basic_investment_return -= withdraw.basic_withdraw_amount
print(withdraw.investment.basic_investment_return)
withdraw.save()
messages.success(request, 'your withdrawal of {} is successfull '.format(withdraw.basic_withdraw_amount))
else:
#Raise certain exception saying basic_investment_return is none
else:
messages.success(request, 'your withdrawal of {} is unsuccessfull '.format(withdraw.basic_withdraw_amount))
else:
basic_withdraw_form = BasicWithdrawalForm()
context = {'basic_withdraw_form': basic_withdraw_form}
return render(request, 'create-basic-withdrawal.html', context)