问题描述
我正在使用Django 1.7.1。我的模型看起来像这样: from datetime import datetime
from django.db import models
class myModel(models.Model):
x = models.CharField(max_length = 254,null = True,blank = True,)
一切工作都很好。
但是,当我将以下属性添加到myModel时,它会中断:
y = models.DateTimeField(default = lambda:datetime.utcnow()+ timedelta(days = 1),editable = False)
manage.py makemigrations
给我以下错误: p>
ValueError:无法序列化功能:lambda
这似乎是一个已知的错误:
那么我该如何解决呢?默认情况下,需要将 y
的值自动设置为创建模型之后的24小时。
解决这个问题:
所以解决方案很简单:只需在模块范围内定义函数,而不是使用lambda。
I'm using Django 1.7.1. My model looks like this:
from datetime import datetime
from django.db import models
class myModel(models.Model):
x = models.CharField(max_length=254,null=True, blank=True,)
Everything works perfectly fine.
However, when I add the following attribute to myModel, it breaks:
y = models.DateTimeField(default=lambda: datetime.utcnow() + timedelta(days=1), editable=False)
manage.py makemigrations
gives me the following error:
ValueError: Cannot serialize function: lambda
This seems like a known bug: http://comments.gmane.org/gmane.comp.python.django.scm/125724
So how can I work around it? I need the value of y
to be automatically set by default to 24 hours from the moment the model was created.
The migrations documentation addresses this:
So the solution is simple: just define the function in module scope rather than using a lambda.
这篇关于Django 1.7.1当使用lambda作为属性的默认值时,Makemigrations失败的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!