Django alter checkconstraint с полем json
Я хочу alter table
добавить контрольное ограничение в mysql, если использовать sql, как показано ниже
ALTER TABLE Test
ADD CONSTRAINT chk_sss
CHECK(
JSON_SCHEMA_VALID(
'{
"type":"object",
"properties":{
"latitude":{"type":"number", "minimum":-90, "maximum":90},
"longitude":{"type":"number", "minimum":-180, "maximum":180}
},
"required": ["latitude", "longitude"]
}',
sss
)
)
class Test(models.Model):
sss = models.JSONField(null=True)
class Meta:
constraints = [
CheckConstraint(
check = ???????),
]
как написать этот sql в модели
Обычно, если данные структурированы, не имеет особого смысла хранить их в виде JSON-блоба в реляционной базе данных, поскольку это делает запросы менее выразительными и менее эффективными.
Так вы работаете с:
class Test(models.Model):
# sss = models.JSONField(null=True)
latitude = models.FloatField()
longitude = models.FloatField()
class Meta:
constraints = [
CheckConstraint(Q(latitude__range=(-90, 90)), name='latitude_range'),
CheckConstraint(
Q(longitude__range=(-180, 180)), name='longitude_range'
),
]