#34716: Using subclass method as a callable for a field's default value results 
in
wrong reference in the corresponding migration
-------------------------------------------+------------------------
               Reporter:  Nicolò Intrieri  |          Owner:  nobody
                   Type:  Bug              |         Status:  new
              Component:  Migrations       |        Version:  4.2
               Severity:  Normal           |       Keywords:
           Triage Stage:  Unreviewed       |      Has patch:  0
    Needs documentation:  0                |    Needs tests:  0
Patch needs improvement:  0                |  Easy pickings:  0
                  UI/UX:  0                |
-------------------------------------------+------------------------
 {{{
 #!div

 Given the following model:

   {{{#!python

 class Profile(models.Model):

     class Capability(models.TextChoices):
         BASIC = ("BASIC", "Basic")
         PROFESSIONAL = ("PROFESSIONAL", "Professional")

         @classmethod
         def default(cls) -> list[str]:
             return [cls.BASIC]

         capabilities = ArrayField(
           models.CharField(choices=Capability.choices, max_length=30,
 blank=True),
           null=True,
           default=Capability.default
         )


   }}}

 The resulting migration contained the following:
  {{{#!python
     # ...
       migrations.AddField(
             model_name='profile',
             name='capabilities',
 
field=django.contrib.postgres.fields.ArrayField(base_field=models.CharField(blank=True,
 choices=[('BASIC', 'Basic'), ('PROFESSIONAL', 'Professional')],
 max_length=30), default=appname.models.Capability.default, null=True,
 size=None),
         ),
     # ...
   }}}
 }}}


 As you can see, migrations.AddField is passed as argument "default" a
 wrong value "appname.models.Capability.default", which leads to an error
 when trying to migrate. The right value should be
 "appname.models.Profile.Capability.default".

-- 
Ticket URL: <https://code.djangoproject.com/ticket/34716>
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 [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-updates/0107018963298a74-43a4af94-1336-4b05-a6b1-8d3f3bee6d44-000000%40eu-central-1.amazonses.com.

Reply via email to