如何将上界存储到无限 DecimalRangeField

How to store upperbound to infinite DecimalRangeField

从 django.contrib.postgres.fields 导入 DecimalRangeField Django3 和 Postgres11

我需要在 DecimalRangeField()

中存储 inf
from django.contrib.postgres.fields import DecimalRangeField
from psycopg2.extras import NumericRange

class Premium(models.Model):
     sum_insured = DecimalRangeField()

NumericRange 小号有效

    def test_range_field(self):
        Premium.objects.create(
            sum_insured=NumericRange(3, 12),
        )
        self.assertEqual(1, Premium.objects.count())

问题:

Premium.objects.create(
   sum_insured=NumericRange(3, float('inf'))
)

它引发错误

django.db.utils.ProgrammingError: syntax error at or near "Infinity"

问题:
如何将 inf 存储在 DecimalRangeField 中?

一个NumericRange object is a special form of a Range object。正如文档为 lowerupper 参数指定的那样:

lower – lower bound for the range. None means unbound

upper – upper bound for the range. None means unbound

如果 lowerupper 设置为 None(例如不指定),您可以定义 lower 或上限到达的区间无穷大。

所以你可以这样定义:

Premium.objects.create(
   sum_insured=<b>NumericRange(3, None)</b>
)

或更短:

Premium.objects.create(
   sum_insured=<b>NumericRange(3)</b>
)