Re: [Django] #28489: AttributeError: 'NoneType' object has no attribute 'is_relation' - None is undefined

2017-08-12 Thread Django
#28489: AttributeError: 'NoneType' object has no attribute 'is_relation' - None 
is
undefined
--+--
 Reporter:  Python Force  |Owner:  nobody
 Type:  Bug   |   Status:  closed
Component:  Migrations|  Version:  1.11
 Severity:  Normal|   Resolution:  duplicate
 Keywords:| Triage Stage:  Unreviewed
Has patch:  0 |  Needs documentation:  0
  Needs tests:  0 |  Patch needs improvement:  0
Easy pickings:  0 |UI/UX:  0
--+--
Changes (by Tim Graham):

 * status:  new => closed
 * resolution:   => duplicate


Comment:

 Looks like a duplicate of #28073. If you can provide steps to reproduce
 such as a sample project, please reopen that ticket.

-- 
Ticket URL: 
Django 
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 post to this group, send email to django-updates@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-updates/067.fcaa1d104ff5e7f3c8b874aacb7cbf1e%40djangoproject.com.
For more options, visit https://groups.google.com/d/optout.


[Django] #28489: AttributeError: 'NoneType' object has no attribute 'is_relation' - None is undefined

2017-08-11 Thread Django
#28489: AttributeError: 'NoneType' object has no attribute 'is_relation' - None 
is
undefined
+
   Reporter:  Python Force  |  Owner:  nobody
   Type:  Bug   | Status:  new
  Component:  Migrations|Version:  1.11
   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 |
+
 Hello,

 Was going from Django version 1.10.7 to 1.11.4 and my migrations were
 working in 1.10.7 and stopped in 1.11.4. All my migrations were migrated
 before the upgrade. I went back to 1.10.7 and it was working again. Going
 back to 1.11.4 same error.

 {{{
 Traceback (most recent call last):
   File "manage.py", line 10, in 
 execute_from_command_line(sys.argv)
   File "[...]/venv/lib/python2.7/site-
 packages/django/core/management/__init__.py", line 363, in
 execute_from_command_line
 utility.execute()
   File "[...]/venv/lib/python2.7/site-
 packages/django/core/management/__init__.py", line 355, in execute
 self.fetch_command(subcommand).run_from_argv(self.argv)
   File "[...]/venv/lib/python2.7/site-
 packages/django/core/management/base.py", line 283, in run_from_argv
 self.execute(*args, **cmd_options)
   File "[...]/venv/lib/python2.7/site-
 packages/django/core/management/base.py", line 330, in execute
 output = self.handle(*args, **options)
   File "[...]/venv/lib/python2.7/site-
 packages/django/core/management/commands/migrate.py", line 163, in handle
 pre_migrate_state =
 executor._create_project_state(with_applied_migrations=True)
   File "/[...]/venv/lib/python2.7/site-
 packages/django/db/migrations/executor.py", line 81, in
 _create_project_state
 migration.mutate_state(state, preserve=False)
   File "[...]/venv/lib/python2.7/site-
 packages/django/db/migrations/migration.py", line 92, in mutate_state
 operation.state_forwards(self.app_label, new_state)
   File "[...]/venv/lib/python2.7/site-
 packages/django/db/migrations/operations/fields.py", line 150, in
 state_forwards
 delay = not old_field.is_relation
 AttributeError: 'NoneType' object has no attribute 'is_relation'
 }}}

 When I look in the fields.py file I can see on the line 139 a function:

 {{{
 def state_forwards(self, app_label, state):
 new_fields = []
 old_field = None
 for name, instance in state.models[app_label,
 self.model_name_lower].fields:
 if name != self.name:
 new_fields.append((name, instance))
 else:
 old_field = instance
 state.models[app_label, self.model_name_lower].fields = new_fields
 # Delay rendering of relationships if it's not a relational field
 delay = not old_field.is_relation
 state.reload_model(app_label, self.model_name_lower, delay=delay)
 }}}

 Found out that it was crashing on 1 of the model fields that are not
 existing anymore in the database. I added a line to print the name of the
 model and field to find out what is causing the crash.

 If old_field = None then it is calling a method on empty variable and it
 throws and error.

 Added this line

 {{{
 print app_label + " " + self.model_name_lower + " " + self.name
 }}}

 {{{
 def state_forwards(self, app_label, state):
 new_fields = []
 old_field = None
 print app_label + " " + self.model_name_lower + " " + self.name
 for name, instance in state.models[app_label,
 self.model_name_lower].fields:
 if name != self.name:
 new_fields.append((name, instance))
 else:
 old_field = instance
 state.models[app_label, self.model_name_lower].fields = new_fields
 # Delay rendering of relationships if it's not a relational field
 delay = not old_field.is_relation
 state.reload_model(app_label, self.model_name_lower, delay=delay)
 }}}

 The Output was

 {{{
 cars video subtitle_url
 cars photos gear
 cars news tags
 Traceback (most recent call last):
   File "manage.py", line 10, in 
 execute_from_command_line(sys.argv)
   File "[...]/venv/lib/python2.7/site-
 packages/django/core/management/__init__.py", line 363, in
 execute_from_command_line
 utility.execute()
   File "[...]/venv/lib/python2.7/site-
 packages/django/core/management/__init__.py", line 355, in execute
 self.fetch_command(subcommand).run_from_argv(self.argv)
   File "[...]/venv/lib/python2.7/site-
 packages/django/core/management/base.py", line 283, in run_from_argv
 self.execute(*args, **cmd_options)
   File "[...]/venv/lib/python2.7/site-
 packages/django/core/management/base.py", line 330, in execute
 output = self.handle(*args, **options)
   File "[...]/venv/lib/python2.7/site-