Django alter checkconstraint with json field
I want to alter table
to add check constraint in mysql, if using sql like below
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 = ???????),
]
how to write this sql in model ?
Usually if data is structured, it makes not much sense to store that as a JSON blob in a relational database, because it makes querying less expressive and less efficient as well.
So you work with:
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'
),
]