﻿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
21785	migrate fails on DateTimeField with auto_now AND auto_now_add set	Gabe Jackson	Andrew Godwin	"migrate fails on DateTimeField(auto_now=True, auto_now_add=True):

{{{
Running migrations:
  No migrations needed.
Traceback (most recent call last):
  File ""./manage.py"", line 9, in <module>
    execute_from_command_line(sys.argv)
  File ""/Users/gabejackson/venv/m/lib/python2.7/site-packages/django/core/management/__init__.py"", line 427, in execute_from_command_line
    utility.execute()
  File ""/Users/gabejackson/venv/m/lib/python2.7/site-packages/django/core/management/__init__.py"", line 419, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File ""/Users/gabejackson/venv/m/lib/python2.7/site-packages/django/core/management/base.py"", line 244, in run_from_argv
    self.execute(*args, **options.__dict__)
  File ""/Users/gabejackson/venv/m/lib/python2.7/site-packages/django/core/management/base.py"", line 291, in execute
    output = self.handle(*args, **options)
  File ""/Users/gabejackson/venv/m/lib/python2.7/site-packages/django/core/management/commands/migrate.py"", line 138, in handle
    ProjectState.from_apps(apps),
  File ""/Users/gabejackson/venv/m/lib/python2.7/site-packages/django/db/migrations/state.py"", line 61, in from_apps
    model_state = ModelState.from_model(model)
  File ""/Users/gabejackson/venv/m/lib/python2.7/site-packages/django/db/migrations/state.py"", line 114, in from_model
    name, path, args, kwargs = field.deconstruct()
  File ""/Users/gabejackson/venv/m/lib/python2.7/site-packages/django/db/models/fields/__init__.py"", line 911, in deconstruct
    del kwargs['editable']
KeyError: u'editable'
}}}

This is due to: django/db/models/fields/__init__.py doing this:

{{{
    def deconstruct(self):
        name, path, args, kwargs = super(DateField, self).deconstruct()
        if self.auto_now:
            kwargs['auto_now'] = True
            del kwargs['editable']
            del kwargs['blank']
        if self.auto_now_add:
            kwargs['auto_now_add'] = True
            del kwargs['editable']
            del kwargs['blank']
        return name, path, args, kwargs
}}}

this should probably be:

{{{
    def deconstruct(self):
        name, path, args, kwargs = super(DateField, self).deconstruct()
        if self.auto_now or self.auto_now_add:
            del kwargs['editable']
            del kwargs['blank']
        if self.auto_now:
            kwargs['auto_now'] = True
        if self.auto_now_add:
            kwargs['auto_now_add'] = True
        return name, path, args, kwargs
}}}"	Bug	closed	Migrations	dev	Release blocker	fixed	migrations		Unreviewed	0	0	0	0	1	0
