Django中的以下模型(Python 3.4,Django 1.7.4 w / PostgreSQL)需要其DateTimeField的默认值:
from django.utils import timezone as django_tz
class AvailabilityRuleOnce(AvailabilityRule):
class Meta:
app_label = 'configuration'
objects = AvailabilityRuleOnceManager()
starting_time = django_models.DateTimeField(
'Starting time for the rule', default=django_tz.now, blank=True
)
ending_time = django_models.DateTimeField(
'Ending time for the rule', default=django_tz.now, blank=True
)
尝试应用迁移时,会引发以下异常:
django.db.utils.ProgrammingError: column "ending_time" cannot be cast automatically to type timestamp with time zone
HINT: You might need to specify "USING ending_time::timestamp with time zone".
在Django文档中他们推荐这个选项,我也尝试了其他可以在线找到的选项,比如添加" auto_now_add = True"但它也没有用。我做错了什么?
答案 0 :(得分:1)
auto_now_true
是设置字段在创建时更新的唯一方式,as the documentation states
选项
auto_now_add
,auto_now
和default
是互斥的。这些选项的任何组合都会导致错误。
如果auto_now_true
无效,则需要提出错误。