为什么我的代码抛出'NoneType'对象没有属性"basic_investment_return"?



为什么这行代码

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)

最新更新