﻿id	summary	reporter	owner	description	type	status	component	version	severity	resolution	keywords	cc	stage	has_patch	needs_docs	needs_tests	needs_better_patch	easy	ui_ux
33019	makemigrations produces invalid import path in migration file	Choong Jun Jin	nobody	"This issue is somewhat similar to https://code.djangoproject.com/ticket/27914 with a slightly different problem.

If you define an inner class in the `django.db.models.Model` subclass, `makemigrations` will produce an invalid import path resulting in import error.

Specifically, if we have the following structure in our `models.py`,

{{{#!python
from django.db import models


class OuterClass(models.Model):
    class InnerField(models.CharField):
        pass

    outer_field = InnerField(max_length=100)
}}}

the generated migration file would produce

{{{#!python
# Generated by Django 3.2.6 on 2021-08-13 03:39

from django.db import migrations, models
import test1.models.OuterClass


class Migration(migrations.Migration):

    initial = True

    dependencies = [
    ]

    operations = [
        migrations.CreateModel(
            name='OuterClass',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('outer_field', test1.models.OuterClass.InnerField(max_length=100)),
            ],
        ),
    ]
}}}

Notice that the import path at the top refers to an import of a class. This is an invalid import format.

{{{#!python
import test1.models.OuterClass
}}}

Further usage of `manage.py migrate` will result in errors:

{{{#!python
ModuleNotFoundError: No module named 'test1.models.OuterClass'; 'test1.models' is not a package
}}}

If we change the import to 

{{{#!python
import test1.models
}}}

the migration file will work accordingly."	Bug	closed	Migrations	3.2	Normal	invalid	makemigrations		Unreviewed	0	0	0	0	0	0
