#34351: Slash in constraint name results in invalid migration file naming
-------------------------------------+-------------------------------------
               Reporter:  sdupouy    |          Owner:  nobody
                   Type:  Bug        |         Status:  new
              Component:             |        Version:  4.1
  Migrations                         |       Keywords:  constraint name
               Severity:  Normal     |  slash
           Triage Stage:             |      Has patch:  0
  Unreviewed                         |
    Needs documentation:  0          |    Needs tests:  0
Patch needs improvement:  0          |  Easy pickings:  1
                  UI/UX:  0          |
-------------------------------------+-------------------------------------
 == Steps to reproduce:

 1. create a model
 {{{#!python
 class TestModel(models.Model):
     foo = models.TextField()
     bar = models.TextField()
 }}}
 2. make and apply the initial migration
 3. add a constraint with a forward slash in its name
 {{{#!python
 class TestModel(models.Model):
     foo = models.TextField()
     bar = models.TextField()

     class Meta:
         constraints = [
             models.UniqueConstraint(fields=['foo', 'bar'], name='foo/bar
 unique')
         ]
 }}}
 4. `makemigrations` and `migrate`

 == Result
 Django tries to create a migration file named `0002_testmodel_foo/bar
 unique.py`.
 This results in the creation of the file `bar unique.py` in the directory
 `0002_testmodel_foo`.
 Hence, the last `migrate` command doesn't work.

 == Expected behavior
 Creation of a migration file with a sanitized name, or a warning that the
 constraint name shouldn't contain special characters.

 == Remark
 All that the documentation says on constraint names is
   **BaseConstraint.name**
   The name of the constraint. You must always specify a unique name for
 the constraint.
 It isn't stated that the naming of constraints must follow specific
 conventions.

-- 
Ticket URL: <https://code.djangoproject.com/ticket/34351>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.

-- 
You received this message because you are subscribed to the Google Groups 
"Django updates" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to django-updates+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-updates/0107018664da2dd4-c92d302e-0d5c-4485-8bed-6b693142d800-000000%40eu-central-1.amazonses.com.

Reply via email to