Search code examples
pythondjangoregexdjango-modelsdjango-migrations

Regex validator produce migration without changes


Django detect changes in models with RegexValidator, from django.core.validators import RegexValidator

url_regex_validator = RegexValidator(
        regex=r'^(\w{1,5}:\/\/)([\w\+\/-]+)([\.]\w{1,4})$',
        message="Error invalid URL")

model:

class MyModel(models.Model):
path = models.CharField(max_length=200, default=None, blank=True, null=True, validators=[url_regex_validator])

Every

python manage.py makemigrations

  • Alter field path on mymodel

produce a new migration about regex validator in this model. Any idea?


Solution

  • As I found here https://code.djangoproject.com/ticket/25280#no1

    A quick fix is to workaround this issue is just copy paste the code in django.core.validators:

    from django.core.validators import RegexValidator
        
        url_regex_validator = [RegexValidator(
                regex=r'^(\w{1,5}:\/\/)([\w\+\/-]+)([\.]\w{1,4})$',
                message="Error invalid URL")]
    
    class MyModel(models.Model):
        slug = models.SlugField(unique=True, validators=url_regex_validator)