之前写过这样一个model:

class MonthlyFeeMember(models.Model):
    worker = models.ForeignKey(Student, verbose_name=u"主检查人", related_name="as_monthly_fee_members")
    month = models.CharField(u'检查月份', max_length=10, default=get_current_month())
    check_day = models.CharField(u'检查日期', max_length=20, default=datetime.strftime(date.today(), "%Y-%m-%d"))
    building = models.ForeignKey(Building, verbose_name=u"检查楼栋", null=True, blank=True)
    create_time = models.DateTimeField(u'创建时间', auto_now_add=True)

    class Meta:
        verbose_name_plural = verbose_name = u"水电费检查成员"
        unique_together = ('worker', 'month')
        unique_together = ('month', 'building')

写完之后发现每天runserver的时候都会提示要makemigrations,经过排查发现问题出在设置的默认值上。

把字段check_day的默认值设置成default=datetime.strftime(date.today(), "%Y-%m-%d") 会导致它在每天都是不同的值,相当于每过一天都重新给字段check_day设置了默认值,这样就会改变model导致需要重新migrations。

在这里可以把default修改为:default=datetime.strftime(date.today, "%Y-%m-%d")就行了,这样在真正插入数据的时候才会执行函数,取出返回值。

当然,最好使用DateField来表示check_day:check_day = models.DateField(u'检查日期', auto_now=True)。

但是Django并没有提供月份字段MonthField, 因此只能用CharField来代替,这时候如果想设置月份的默认值可以把这个model中的字段month = models.CharField(u'检查月份', max_length=10, default=get_current_month())修改为:month = models.CharField(u'检查月份', max_length=10, default=get_current_month)即可。

Django的model中日期字段设置默认值的问题的更多相关文章

  1. sqlite数据库中为字段设置默认值为当前时间

    开始 `creation_time` NUMERIC DEFAULT (datetime('now','localtime')), `update_time` NUMERIC DEFAULT (dat ...

  2. c#为字段设置默认值,以及构造函数初始化List对象。

    1.为字段设置默认值 /// <summary> /// 默认值 /// </summary> ; ; /// <summary> /// 页的大小 /// < ...

  3. MySQL 日期类型及默认设置 (除timestamp类型外,系统不支持其它时间类型字段设置默认值)

    MySQL 日期类型及默认设置 之前在用 MySQL 新建 table,创建日期类型列时遇到了一些问题,现在整理下来以供参考. MySQL 的日期类型如何设置当前时间为其默认值? 答:请使用 time ...

  4. MVC4中给TextBoxFor设置默认值和属性

    例如:(特别注意在设置初始值的时候 Value 中的V要大写) @Html.TextBoxFor(model => model.CustomerCode, new { Value="  ...

  5. MVC4中给TextBoxFor设置默认值和属性(同时设置js事件)

    例如:(特别注意在设置初始值的时候 Value 中的V要大写) @Html.TextBoxFor(model => model.CustomerCode, new { Value="  ...

  6. mysql修改表中某个字段的默认值

    Mysql中用SQL增加.删除字段,修改字段名.字段类型.注释,调整字段顺序总结   在网站重构中,通常会进行数据结构的修改,所以添加,删除,增加mysql表的字段是难免的,有时为了方便,还会增加修改 ...

  7. JPA为字段设置默认值

    http://blog.csdn.net/u011983531/article/details/51286839 在使用JPA时,如果需要为属性设置默认值,很自然的,你可能会想到用下面的方式. @Co ...

  8. Django model.py表单设置默认值允许为空

    blank=True 默认值为blank=Flase,表示默认不允许为空, blank=True admin级别可以为空   null=True 默认值为null=Flase,表示默认不允许为空 nu ...

  9. MVC中给TextBoxFor设置默认值和属性

    例如:(特别注意在设置初始值的时候 Value 中的V要大写) @Html.TextBoxFor(model => model.CustomerCode, new { Value=" ...

随机推荐

  1. flask开发restful api系列(4)--七牛图片服务

    上一章我们讲到如何利用alembic来更新数据库,这章,我们讲如何通过七牛服务来存储图片. 像我们大多数公司一样,公司资金比较少,如果自己开发图片服务器,代价太大:如果我们用自己的网站服务器来保存图片 ...

  2. 漫谈项目设计&重构&性能优化

    重构的好处:重构能够改进软件设计,随着项目需求的变更,项目体积的变大早已与最初的设计大相径庭,代码结构变得凌乱.复杂,如果不进行重构,则很难添加新的功能. 1.使项目代码更容易理解很多情况下是由于项目 ...

  3. Hibernate学习笔记--映射配置文件详解

    参考资料: http://blog.163.com/hzd_love/blog/static/13199988120108265317988/ http://www.cnblogs.com/often ...

  4. mysql日志文件相关的配置【1】

    1.log_output=[file | table | none ] 这个参数指定general_log &slow_query_log 的输出目标.可以是table | file | no ...

  5. iOS应用崩溃日志分析-备用

    作为一名应用开发者,你是否有过如下经历?   为确保你的应用正确无误,在将其提交到应用商店之前,你必定进行了大量的测试工作.它在你的设备上也运行得很好,但是,上了应用商店后,还是有用户抱怨会闪退 ! ...

  6. 给logstash 模板添加触发器

  7. wordpress提速插件

    auto-remove-googles-url插件,替换前后台国外字体!访问速度有较大提高!可百度搜索auto-remove-googles-url下载,如在wp后台进行插件安装即可

  8. pyglet: a cross-platform windowing and multimedia

    pyglet pyglet: a cross-platform windowing and multimedia library for Python.

  9. <php>PDO链接方法

    <?php //定义数据源 $dsn = "mysql:dbname=mydb;host=localhost"; //$dsn = "sqlsrv:dbname=m ...

  10. flash与字符串:字符串与属性

    有时候,我们想通过设置一个DisplayObject 类是属性值,只是需要通过点来引用即可.有时候,通过字符串也可以引用显示对象里面的属性值.     下面举个例子 .                 ...