﻿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
22847	Squashmigrations fails with ForeignKey	Vidir Valberg Gudmundsson	nobody	"Starting with these models:

{{{
class Foo(models.Model):
    pass

class Bar(models.Model):
    text = models.CharField(max_length=255)
}}}

which has this migrations:

{{{
# -*- coding: utf-8 -*-
from __future__ import unicode_literals

from django.db import models, migrations


class Migration(migrations.Migration):

    dependencies = [
    ]

    operations = [
        migrations.CreateModel(
            name='Bar',
            fields=[
                ('id', models.AutoField(auto_created=True, verbose_name='ID', serialize=False, primary_key=True)),
                ('text', models.CharField(max_length=255)),
            ],
            options={
            },
            bases=(models.Model,),
        ),
        migrations.CreateModel(
            name='Foo',
            fields=[
                ('id', models.AutoField(auto_created=True, verbose_name='ID', serialize=False, primary_key=True)),
            ],
            options={
            },
            bases=(models.Model,),
        ),
    ]
}}}

Adding a ForeignKey like this:

{{{
class Foo(models.Model):
    pass

class Bar(models.Model):
    text = models.CharField(max_length=255)
    foo = models.ForeignKey('testapp.Foo', null=True)
}}}

which results in this migration:

{{{
# -*- coding: utf-8 -*-
from __future__ import unicode_literals

from django.db import models, migrations


class Migration(migrations.Migration):

    dependencies = [
        ('testapp', '0001_initial'),
    ]

    operations = [
        migrations.AddField(
            model_name='bar',
            name='foo',
            field=models.ForeignKey(to_field='id', null=True, to='testapp.Foo'),
            preserve_default=True,
        ),
    ]
}}}

When trying to squash those, the following error occurs:

{{{
$ ./manage.py squashmigrations testapp 0002
Will squash the following migrations:
 - 0001_initial
 - 0002_bar_foo
Do you wish to proceed? [yN] y
Optimizing...
Traceback (most recent call last):
  File ""./manage.py"", line 10, in <module>
    execute_from_command_line(sys.argv)
  File ""/Users/valberg/.virtualenvs/django17/lib/python3.4/site-packages/django/core/management/__init__.py"", line 385, in execute_from_command_line
    utility.execute()
  File ""/Users/valberg/.virtualenvs/django17/lib/python3.4/site-packages/django/core/management/__init__.py"", line 377, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File ""/Users/valberg/.virtualenvs/django17/lib/python3.4/site-packages/django/core/management/base.py"", line 288, in run_from_argv
    self.execute(*args, **options.__dict__)
  File ""/Users/valberg/.virtualenvs/django17/lib/python3.4/site-packages/django/core/management/base.py"", line 337, in execute
    output = self.handle(*args, **options)
  File ""/Users/valberg/.virtualenvs/django17/lib/python3.4/site-packages/django/core/management/commands/squashmigrations.py"", line 79, in handle
    new_operations = optimizer.optimize(operations, migration.app_label)
  File ""/Users/valberg/.virtualenvs/django17/lib/python3.4/site-packages/django/db/migrations/optimizer.py"", line 40, in optimize
    result = self.optimize_inner(operations, app_label)
  File ""/Users/valberg/.virtualenvs/django17/lib/python3.4/site-packages/django/db/migrations/optimizer.py"", line 54, in optimize_inner
    result = self.reduce(operation, other, operations[i + 1:i + j + 1])
  File ""/Users/valberg/.virtualenvs/django17/lib/python3.4/site-packages/django/db/migrations/optimizer.py"", line 159, in reduce
    return om(operation, other, in_between or [])
  File ""/Users/valberg/.virtualenvs/django17/lib/python3.4/site-packages/django/db/migrations/optimizer.py"", line 209, in reduce_create_model_add_field
    other.field.rel.to._meta.object_name,
AttributeError: 'str' object has no attribute '_meta'
}}}"	Bug	closed	Migrations	1.7-beta-2	Release blocker	fixed			Accepted	0	0	0	0	0	0
