Django DateTimeField默认

时间:2015-11-24 23:50:02

标签: python django postgresql django-models

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"但它也没有用。我做错了什么?

1 个答案:

答案 0 :(得分:1)

auto_now_true 是设置字段在创建时更新的唯一方式,as the documentation states

  

选项auto_now_addauto_nowdefault是互斥的。这些选项的任何组合都会导致错误。

如果auto_now_true无效,则需要提出错误。