Bug in 1.7-1.8 migrations

56 views
Skip to first unread message

Владислав Пискунов

unread,
Jun 5, 2015, 7:32:15 AM6/5/15
to django...@googlegroups.com
In 1.7 auto-created migration with makemigrations. it contains: 

related_name=b''

Now in 1.8 while migrate, django tries Render model state and fails with:

File "/home/vladislav/.virtualenvs/furskru/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 338, in execute_from_command_line
    utility.execute()
  File "/home/vladislav/.virtualenvs/furskru/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 330, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/home/vladislav/.virtualenvs/furskru/local/lib/python2.7/site-packages/django/core/management/base.py", line 390, in run_from_argv
    self.execute(*args, **cmd_options)
  File "/home/vladislav/.virtualenvs/furskru/local/lib/python2.7/site-packages/django/core/management/base.py", line 441, in execute
    output = self.handle(*args, **options)
  File "/home/vladislav/.virtualenvs/furskru/local/lib/python2.7/site-packages/django/core/management/commands/migrate.py", line 221, in handle
    executor.migrate(targets, plan, fake=fake, fake_initial=fake_initial)
  File "/home/vladislav/.virtualenvs/furskru/local/lib/python2.7/site-packages/django/db/migrations/executor.py", line 104, in migrate
    state = migration.mutate_state(state, preserve=do_run)
  File "/home/vladislav/.virtualenvs/furskru/local/lib/python2.7/site-packages/django/db/migrations/migration.py", line 83, in mutate_state
    operation.state_forwards(self.app_label, new_state)
  File "/home/vladislav/.virtualenvs/furskru/local/lib/python2.7/site-packages/django/db/migrations/operations/models.py", line 158, in state_forwards
    apps = state.apps
  File "/home/vladislav/.virtualenvs/furskru/local/lib/python2.7/site-packages/django/utils/functional.py", line 60, in __get__
    res = instance.__dict__[self.name] = self.func(instance)
  File "/home/vladislav/.virtualenvs/furskru/local/lib/python2.7/site-packages/django/db/migrations/state.py", line 166, in apps
    return StateApps(self.real_apps, self.models)
  File "/home/vladislav/.virtualenvs/furskru/local/lib/python2.7/site-packages/django/db/migrations/state.py", line 232, in __init__
    self.render_multiple(list(models.values()) + self.real_models)
  File "/home/vladislav/.virtualenvs/furskru/local/lib/python2.7/site-packages/django/db/migrations/state.py", line 262, in render_multiple
    model.render(self)
  File "/home/vladislav/.virtualenvs/furskru/local/lib/python2.7/site-packages/django/db/migrations/state.py", line 546, in render
    body,
  File "/home/vladislav/.virtualenvs/furskru/local/lib/python2.7/site-packages/django/db/models/base.py", line 189, in __new__
    new_class.add_to_class(obj_name, obj)
  File "/home/vladislav/.virtualenvs/furskru/local/lib/python2.7/site-packages/django/db/models/base.py", line 324, in add_to_class
    value.contribute_to_class(cls, name)
  File "/home/vladislav/.virtualenvs/furskru/local/lib/python2.7/site-packages/django/db/models/fields/related.py", line 1767, in contribute_to_class
    super(ForeignObject, self).contribute_to_class(cls, name, virtual_only=virtual_only)
  File "/home/vladislav/.virtualenvs/furskru/local/lib/python2.7/site-packages/django/db/models/fields/related.py", line 305, in contribute_to_class
    add_lazy_relation(cls, self, other, resolve_related_class)
  File "/home/vladislav/.virtualenvs/furskru/local/lib/python2.7/site-packages/django/db/models/fields/related.py", line 86, in add_lazy_relation
    operation(field, model, cls)
  File "/home/vladislav/.virtualenvs/furskru/local/lib/python2.7/site-packages/django/db/models/fields/related.py", line 304, in resolve_related_class
    field.do_related_class(model, cls)
  File "/home/vladislav/.virtualenvs/furskru/local/lib/python2.7/site-packages/django/db/models/fields/related.py", line 349, in do_related_class
    self.contribute_to_related_class(other, self.rel)
  File "/home/vladislav/.virtualenvs/furskru/local/lib/python2.7/site-packages/django/db/models/fields/related.py", line 1958, in contribute_to_related_class
    super(ForeignKey, self).contribute_to_related_class(cls, related)
  File "/home/vladislav/.virtualenvs/furskru/local/lib/python2.7/site-packages/django/db/models/fields/related.py", line 1773, in contribute_to_related_class
    if not self.rel.is_hidden() and not related.related_model._meta.swapped:
  File "/home/vladislav/.virtualenvs/furskru/local/lib/python2.7/site-packages/django/db/models/fields/related.py", line 1355, in is_hidden
    return self.related_name is not None and self.related_name[-1] == '+'
IndexError: string index out of range


Carl Meyer

unread,
Jun 5, 2015, 2:22:30 PM6/5/15
to django...@googlegroups.com
Hi!

On 06/05/2015 05:29 AM, Владислав Пискунов wrote:
> In 1.7 auto-created migration with makemigrations. it contains:
>
> |
> related_name=b''
> |
>
> Now in 1.8 while migrate, django tries Render model state and fails with:
>
[snip]

> File
> "/home/vladislav/.virtualenvs/furskru/local/lib/python2.7/site-packages/django/db/models/fields/related.py",
> line 1355, in is_hidden
> return self.related_name is not None and self.related_name[-1] == '+'
> IndexError: string index out of range
> |

Certainly looks like a bug! Would you be willing to report it at
https://code.djangoproject.com/newticket ?

Thanks!

Carl

signature.asc

Markus Holtermann

unread,
Jun 6, 2015, 9:24:11 AM6/6/15
to django...@googlegroups.com
Which exact Django version did you use for generating and applying the
migrations? 1.7 as well as 1.8 had a few bugs regarding bytestrings.
They have been fixed in 1.7.something and 1.8.something. I'd need to
look up the exact patch version.

/Markus
>--
>You received this message because you are subscribed to the Google Groups "Django users" group.
>To unsubscribe from this group and stop receiving emails from it, send an email to django-users...@googlegroups.com.
>To post to this group, send email to django...@googlegroups.com.
>Visit this group at http://groups.google.com/group/django-users.
>To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/ee7f5d71-05a5-4d20-8bf1-6f473c89146b%40googlegroups.com.
>For more options, visit https://groups.google.com/d/optout.


--
Reply all
Reply to author
Forward
0 new messages