如何存储上界到无限的DecimalRangeField?

问题描述 投票:1回答:1

从django.contrib.postgres.field导入DecimalRangeFieldDjango3和Postgres11。

我需要储存 infDecimalRangeField()

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"

问题。 我如何储存 infDecimalRangeField?

django postgresql infinite
1个回答
1
投票

A NumericRange 对象 是一种特殊形式的 Range 对象. 正如文件中所规定的 lowerupper 参数的下限。

lower - 范围的下限。None 意味着无界

upper - 范围的上界。None 是指无界

如果 lowerupper 设置为 None (例如,不指定它),您定义了一个区间,在这个区间内的 lower 或上分别归于无穷大。

所以你可以用定义。

Premium.objects.create(
   sum_insured=NumericRange(3, None)
)

或更短。

Premium.objects.create(
   sum_insured=NumericRange(3)
)
© www.soinside.com 2019 - 2024. All rights reserved.