Python Django-在FloatField中不允许NaN和无穷大
如何在Django中创建一个不允许保存NaN值或无穷大值(同时仍然允许空值)的Python Django-在FloatField中不允许NaN和无穷大,python,django,postgresql,Python,Django,Postgresql,如何在Django中创建一个不允许保存NaN值或无穷大值(同时仍然允许空值)的浮动字段——即: class MyModel(models.Model): rate = models.FloatField(null=True, nans=False) # ??? 我使用Postgres作为后端。如果通用解决方案不存在,可能存在Postgres特定的解决方案?您可以将其作为约束添加,也可以创建一个类型或域,该类型或域可以多次使用 您可以创建自己的自定义字段: from django.db
浮动字段
——即:
class MyModel(models.Model):
rate = models.FloatField(null=True, nans=False) # ???
我使用Postgres作为后端。如果通用解决方案不存在,可能存在Postgres特定的解决方案?您可以将其作为约束添加,也可以创建一个类型或域,该类型或域可以多次使用
您可以创建自己的自定义字段:
from django.db import models
class HandField(models.FloatField):
description = "Custom FloatField"
def check(self, **kwargs):
errors = super().check(**kwargs)
errors.extend(self._check_custom_format())
return errors
def _check_custom_format(self):
local_errors
#Here you should check if the format is correct.
#If something is not right, you should add an error object (from django.core.checks) to local_errors
return local_errors
错误对象:
checks.Error(
'Some error',
obj=self,
id='Some id',
)
我还没有尝试过编码,它是基于IntegerField的
最好知道Django是否有现成的解决方案,可以创建必要的约束条件,这样我就不必手动创建约束条件。评论不错)无需在此处创建huci buci谢谢!这部分地解决了我的问题,也就是说,如果我不通过Django将数据添加到数据库中,它仍然可能是无效的。如何在DB级别施加非NaN约束?
from django.db import models
class HandField(models.FloatField):
description = "Custom FloatField"
def check(self, **kwargs):
errors = super().check(**kwargs)
errors.extend(self._check_custom_format())
return errors
def _check_custom_format(self):
local_errors
#Here you should check if the format is correct.
#If something is not right, you should add an error object (from django.core.checks) to local_errors
return local_errors
checks.Error(
'Some error',
obj=self,
id='Some id',
)