Django:过滤“DecimalField”并不能很好地工作?

时间:2018-02-06 04:32:50

标签: django django-queryset

这是我的model

class Tick(BaseModel):
    .
    .
    trade_coin_volume = models.DecimalField(
        max_digits=15,
        decimal_places=8,
    )
    trade_price = models.DecimalField(
        max_digits=15,
        decimal_places=8,
    )
    .
    .

我打印出所有trade_coin_volume个对象的Tick

In [9]: for tick in Tick.objects.all():
   ...:     print(tick.trade_coin_volume)
   ...:
0.02120853
0.05000000
0.26628998
0.19354556
0.32299392
0.72599405
0.05955935
0.05354201
0.00767441
0.05101970
0.20967645
0.10000001
0.00500000
0.00899999
0.15274410
0.32104315
0.00300000
0.22695384
0.05000000
0.13894616
0.00631414
0.07967759
0.28592241
0.23765636
0.05777923
0.08883787
0.05000000
0.14535185

如上所示,有一些0.05000000值。

但是当我根据此字段过滤Tick个对象时,

In [11]: Tick.objects.filter(trade_coin_volume=0.05)
Out[11]: <QuerySet []>

In [12]: Tick.objects.filter(trade_coin_volume=0.05000000)
Out[12]: <QuerySet []>

它没有任何显示!

为什么会这样?

1 个答案:

答案 0 :(得分:3)

Decimal实例在Python中表示的Django DecimalField。试试这个:

from decimal import Decimal
Tick.objects.filter(trade_coin_volume=Decimal('0.05'))