Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在django money MoneyField上使用F表达式_Python_Django_Django Models - Fatal编程技术网

Python 在django money MoneyField上使用F表达式

Python 在django money MoneyField上使用F表达式,python,django,django-models,Python,Django,Django Models,使用Django 1.8.5和Django money 0.7.4,我想使用F表达式更新MoneyField,以避免可能的竞争条件。假设我的钱包定义为 from moneyed.classes import Money from django.db.models import F from django.db import models from djmoney.models.fields import M0oneyField class Wallet(models.Model): b

使用Django 1.8.5和Django money 0.7.4,我想使用F表达式更新MoneyField,以避免可能的竞争条件。假设我的钱包定义为

from moneyed.classes import Money
from django.db.models import F
from django.db import models
from djmoney.models.fields import M0oneyField

class Wallet(models.Model):
    balance = MoneyField(max_digits=5, decimal_places=2, default_currency='EUR')
以下用于填充钱包的代码失败,原因是
AttributeError:“CombinedExpression”对象没有属性“children”

amount_to_add = Money(amount="3", currency="EUR")
wallet = Wallet(balance=10)
wallet.balance = F('balance') + amount_to_add

我还尝试了
wallet.balance.amount=F(“balance\uu amount”)+3
,它不会立即抛出异常,但随后的
wallet.save()
失败,出现
TypeError:需要浮点数
。正确的方法是什么?

您是否尝试过给它一个浮点而不是整数?试试:
wallet.balance.amount=F(“余额金额”)+浮动(3)


我不知道为什么他们的代码不自动尝试将整数转换为浮点数(如果需要的话)。

因为
django money
0.7.7支持所有基本的
F
对象操作。
它适用于Django 1.4+。

感谢您的回答,Electronitro,我确实尝试添加了一个浮点,但它返回相同的
类型错误:需要一个浮点。此外,MoneyField的全部要点是将所有操作保留在十进制上,因此这个错误非常模糊。。。