如何将上界存储到无限 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。正如文档为 lower
和 upper
参数指定的那样:
lower
– lower bound for the range. None
means unbound
upper
– upper bound for the range. None
means unbound
如果 lower
或 upper
设置为 None
(例如不指定),您可以定义 lower
或上限到达的区间无穷大。
所以你可以这样定义:
Premium.objects.create(
sum_insured=<b>NumericRange(3, None)</b>
)
或更短:
Premium.objects.create(
sum_insured=<b>NumericRange(3)</b>
)
从 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。正如文档为 lower
和 upper
参数指定的那样:
lower
– lower bound for the range.None
means unbound
upper
– upper bound for the range.None
means unbound
如果 lower
或 upper
设置为 None
(例如不指定),您可以定义 lower
或上限到达的区间无穷大。
所以你可以这样定义:
Premium.objects.create(
sum_insured=<b>NumericRange(3, None)</b>
)
或更短:
Premium.objects.create(
sum_insured=<b>NumericRange(3)</b>
)