Django:“DecimalField”过滤效果不好?

use*_*632 5 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,
    )
    .
    .
Run Code Online (Sandbox Code Playgroud)

我打印出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
Run Code Online (Sandbox Code Playgroud)

正如您在上面看到的,有一些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 []>
Run Code Online (Sandbox Code Playgroud)

它没有显示任何东西!

为什么会发生这种情况?

nev*_*ner 4

Django DecimalField 用 Python 表示的Decimal实例。尝试这个:

from decimal import Decimal
Tick.objects.filter(trade_coin_volume=Decimal('0.05'))
Run Code Online (Sandbox Code Playgroud)