Django 1.7.1 Makemigrations fails when using lambda as default for attribute

The migrations documentation addresses this:

Migrations are just Python files containing the old definitions of your models – thus, to write them, Django must take the current state of your models and serialize them out into a file. While Django can serialize most things, there are some things that we just can’t serialize out into a valid Python representation….

Django can serialize the following: Any function or method reference… in module’s top-level scope

Django cannot serialize: Lambdas

So the solution is simple: instead of a lambda, define a regular function and refer to it by name.

def one_day_hence():
    return datetime.utcnow() + timezone.timedelta(days=1)

class MyModel(models.Model):
    y = models.DateTimeField(default=one_day_hence)

Leave a Comment

Hata!: SQLSTATE[HY000] [1045] Access denied for user 'divattrend_liink'@'localhost' (using password: YES)