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'
            ),
        ]
Back to Top