我相信这应该是相当容易的,但它提出了一些挑战,并且没有任何建议可以通过Google进行搜索。Django - 从F表达中获得价值
我有一个Django模型是这样的: Affiliate -> Account
其中帐户有balance
属性,它跟踪账户余额。由于它可以同时修改,因此我使用F()表达式来修改它。
事情是...在给定的测试,我试图比较affiliate.account.balance
与预期值-1.00
(十进制值),但不同,因为德˚F表达没有得到解决:
First differing element 12: # (yes... I'm comparing it within an array)
Decimal('-1')
<CombinedExpression: F(balance) - Value(1.00)>
我使用F表达这样的:
def charge(self, **kwargs):
amount = kwargs.get('amount')
self.balance = F('balance') + amount
self.save()
一些(也许)重要信息:
$ python3 -m django --version
1.10.5
我试过
affiliate.account.balance.value()
affiliate.account.balance.getValue()
str(affiliate.account.balance)
repr(affiliate.account.balance)
Decimal(affiliate.account.balance)
但没有那些有预期的效果...
所以...我如何获得成功的测试,当我断言
self.assertEquals(Decimal(-1.00), affiliate.account.balance)
谢谢!
编辑:
Account模型
class Account(models.Model):
affiliate = models.OneToOneField(Affiliate, on_delete=models.CASCADE)
balance = models.DecimalField(_('Balance'), max_digits=20, decimal_places=2, default=Decimal(0.00))
你是如何在'Account'模型上声明你的'balance'字段的? –
请问您是否需要为您的账户模式发布代码?它将使回答这个问题变得更容易。 – DragonBobZ
它就是这样。我没有直接发帖,因为我觉得这很微不足道。 – coya