我相信这应该很容易,但它提出了一些挑战,并且没有任何建议出现在谷歌上。
我有一个这样的 django 模型:
Affiliate -> Account
其中 account 有一个balance
跟踪帐户余额的属性。由于它可以同时修改,我使用F() 表达式来修改它。
问题是......在给定的测试中,我试图与affiliate.account.balance
预期值-1.00
(十进制值)进行比较,但它有所不同,因为 de 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)
谢谢!
编辑:
账户模式
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))