[Django] #21785: migrate fails on DateTimeField with auto_now AND auto_now_add set

23 views
Skip to first unread message

Django

unread,
Jan 15, 2014, 7:34:26 PM1/15/14
to django-...@googlegroups.com
#21785: migrate fails on DateTimeField with auto_now AND auto_now_add set
---------------------------------+------------------------
Reporter: gabejackson | Owner:
Type: Bug | Status: new
Component: Migrations | Version: master
Severity: Release blocker | Keywords: migrations
Triage Stage: Unreviewed | Has patch: 0
Easy pickings: 1 | UI/UX: 0
---------------------------------+------------------------
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
}}}

--
Ticket URL: <https://code.djangoproject.com/ticket/21785>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.

Django

unread,
Jan 15, 2014, 7:58:32 PM1/15/14
to django-...@googlegroups.com
#21785: migrate fails on DateTimeField with auto_now AND auto_now_add set
---------------------------------+----------------------------------------
Reporter: gabejackson | Owner: andrewgodwin
Type: Bug | Status: assigned
Component: Migrations | Version: master
Severity: Release blocker | Resolution:

Keywords: migrations | Triage Stage: Unreviewed
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0

Easy pickings: 1 | UI/UX: 0
---------------------------------+----------------------------------------
Changes (by andrewgodwin):

* owner: => andrewgodwin
* needs_docs: => 0
* status: new => assigned
* needs_tests: => 0
* needs_better_patch: => 0


--
Ticket URL: <https://code.djangoproject.com/ticket/21785#comment:1>

Django

unread,
Jan 16, 2014, 12:00:32 AM1/16/14
to django-...@googlegroups.com
#21785: migrate fails on DateTimeField with auto_now AND auto_now_add set
---------------------------------+----------------------------------------
Reporter: gabejackson | Owner: andrewgodwin
Type: Bug | Status: assigned
Component: Migrations | Version: master
Severity: Release blocker | Resolution:

Keywords: migrations | Triage Stage: Unreviewed
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0

Easy pickings: 1 | UI/UX: 0
---------------------------------+----------------------------------------

Comment (by charettes):

I think specifying both `auto_now` and `auto_add_now` should be disallowed
instead. It doesn't make much sense since `auto_add_now` is really just a
case subset of `auto_now`.

--
Ticket URL: <https://code.djangoproject.com/ticket/21785#comment:2>

Django

unread,
Jan 16, 2014, 6:45:21 PM1/16/14
to django-...@googlegroups.com
#21785: migrate fails on DateTimeField with auto_now AND auto_now_add set
---------------------------------+----------------------------------------
Reporter: gabejackson | Owner: andrewgodwin
Type: Bug | Status: assigned
Component: Migrations | Version: master
Severity: Release blocker | Resolution:

Keywords: migrations | Triage Stage: Unreviewed
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0

Easy pickings: 1 | UI/UX: 0
---------------------------------+----------------------------------------

Comment (by gabejackson):

for my defense... this was an autocomplete mistake i made in pycharm. Of
course it doesn't make sense to define both auto_now and auto_now_add, but
this should be caught when initializing the field.

--
Ticket URL: <https://code.djangoproject.com/ticket/21785#comment:3>

Django

unread,
Jan 17, 2014, 5:46:21 AM1/17/14
to django-...@googlegroups.com
#21785: migrate fails on DateTimeField with auto_now AND auto_now_add set
---------------------------------+----------------------------------------
Reporter: gabejackson | Owner: andrewgodwin
Type: Bug | Status: closed
Component: Migrations | Version: master
Severity: Release blocker | Resolution: fixed

Keywords: migrations | Triage Stage: Unreviewed
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0

Easy pickings: 1 | UI/UX: 0
---------------------------------+----------------------------------------
Changes (by Andrew Godwin <andrew@…>):

* status: assigned => closed
* resolution: => fixed


Comment:

In [changeset:"86e69bf3b67ff1e156413e07cef018ec52c2cdd4"]:
{{{
#!CommitTicketReference repository=""
revision="86e69bf3b67ff1e156413e07cef018ec52c2cdd4"
Fixed #21785: Bad handling of both auto_now and _add on deconstruct
}}}

--
Ticket URL: <https://code.djangoproject.com/ticket/21785#comment:4>

Django

unread,
Jan 17, 2014, 10:45:55 AM1/17/14
to django-...@googlegroups.com
#21785: migrate fails on DateTimeField with auto_now AND auto_now_add set
---------------------------------+----------------------------------------
Reporter: gabejackson | Owner: andrewgodwin
Type: Bug | Status: closed
Component: Migrations | Version: master
Severity: Release blocker | Resolution: fixed

Keywords: migrations | Triage Stage: Unreviewed
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0

Easy pickings: 1 | UI/UX: 0
---------------------------------+----------------------------------------

Comment (by charettes):

Tracking the `auto_now` and `auto_add_now` issue in #21798.

--
Ticket URL: <https://code.djangoproject.com/ticket/21785#comment:5>

Reply all
Reply to author
Forward
0 new messages