具有属性约束(如必需/可选)的Python ORMs?
以下是小马ORM可以做的:具有属性约束(如必需/可选)的Python ORMs?,python,django,orm,sqlalchemy,peewee,Python,Django,Orm,Sqlalchemy,Peewee,以下是小马ORM可以做的: class Business(db.Entity): name = Required(str) latitude = Optional(float, py_check=lambda val: -90 <= val <= 90) longitude = Optional(float, py_check=lambda val: -180 <= val <= 180) 类别业务(数据库实体): 名称=
class Business(db.Entity):
name = Required(str)
latitude = Optional(float, py_check=lambda val: -90 <= val <= 90)
longitude = Optional(float, py_check=lambda val: -180 <= val <= 180)
类别业务(数据库实体):
名称=必需(str)
latitude=Optional(float,py_check=lambda val:-90我也不确定您是否希望在非Django应用程序中使用Djano ORM,但请注意,您可以使用Django的内置功能:
from django.db import models
from django.core.validators import MinValueValidator, MaxValueValidator
class Business(models.Model):
name = models.TextField()
latitude = models.FloatField(null=True, blank=True,
validators=[MinValueValidator(-90), MaxValueValidator(90)])
longitude = models.FloatField(null=True, blank=True,
validators=[MinValueValidator(-180), MaxValueValidator(180)])
使用:是
- 通过设置
nullable=False/True
- 验证是使用
下面的代码使用,但纯sqlalchemy代码几乎相同:
class Business(db.Model):
__tablename__ = 'business'
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String, nullable=False)
latitude = db.Column(db.Float, nullable=True)
longitude = db.Column(db.Float, nullable=True)
@db.validates('latitude')
def validate_lat(self, key, value):
assert value is None or (-90 <= value <= 90)
return value
@db.validates('longitude')
def validate_lon(self, key, value):
assert value is None or (-180 <= value <= 180)
return value
类业务(db.Model):
__tablename_uuu=‘业务’
id=db.Column(db.Integer,主键=True)
name=db.Column(db.String,null=False)
纬度=db.Column(db.Float,nullable=True)
经度=db.Column(db.Float,nullable=True)
@db.validates('纬度')
def validate_lat(自身、键、值):
assert value为None或(-90Peewee不支持将验证器作为ORM的一部分,但是您可以使用Field.null
来指示字段是否需要有值