从django.contrib.postgres.field导入DecimalRangeFieldDjango3和Postgres11。
我需要储存 inf
在 DecimalRangeField()
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
?
A NumericRange
对象 是一种特殊形式的 Range
对象. 正如文件中所规定的 lower
和 upper
参数的下限。
lower
- 范围的下限。None
意味着无界
upper
- 范围的上界。None
是指无界
如果 lower
或 upper
设置为 None
(例如,不指定它),您定义了一个区间,在这个区间内的 lower
或上分别归于无穷大。
所以你可以用定义。
Premium.objects.create(
sum_insured=NumericRange(3, None)
)
或更短。
Premium.objects.create(
sum_insured=NumericRange(3)
)