Django的model中日期字段设置默认值的问题
之前写过这样一个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中日期字段设置默认值的问题的更多相关文章
- sqlite数据库中为字段设置默认值为当前时间
开始 `creation_time` NUMERIC DEFAULT (datetime('now','localtime')), `update_time` NUMERIC DEFAULT (dat ...
- c#为字段设置默认值,以及构造函数初始化List对象。
1.为字段设置默认值 /// <summary> /// 默认值 /// </summary> ; ; /// <summary> /// 页的大小 /// < ...
- MySQL 日期类型及默认设置 (除timestamp类型外,系统不支持其它时间类型字段设置默认值)
MySQL 日期类型及默认设置 之前在用 MySQL 新建 table,创建日期类型列时遇到了一些问题,现在整理下来以供参考. MySQL 的日期类型如何设置当前时间为其默认值? 答:请使用 time ...
- MVC4中给TextBoxFor设置默认值和属性
例如:(特别注意在设置初始值的时候 Value 中的V要大写) @Html.TextBoxFor(model => model.CustomerCode, new { Value=" ...
- MVC4中给TextBoxFor设置默认值和属性(同时设置js事件)
例如:(特别注意在设置初始值的时候 Value 中的V要大写) @Html.TextBoxFor(model => model.CustomerCode, new { Value=" ...
- mysql修改表中某个字段的默认值
Mysql中用SQL增加.删除字段,修改字段名.字段类型.注释,调整字段顺序总结 在网站重构中,通常会进行数据结构的修改,所以添加,删除,增加mysql表的字段是难免的,有时为了方便,还会增加修改 ...
- JPA为字段设置默认值
http://blog.csdn.net/u011983531/article/details/51286839 在使用JPA时,如果需要为属性设置默认值,很自然的,你可能会想到用下面的方式. @Co ...
- Django model.py表单设置默认值允许为空
blank=True 默认值为blank=Flase,表示默认不允许为空, blank=True admin级别可以为空 null=True 默认值为null=Flase,表示默认不允许为空 nu ...
- MVC中给TextBoxFor设置默认值和属性
例如:(特别注意在设置初始值的时候 Value 中的V要大写) @Html.TextBoxFor(model => model.CustomerCode, new { Value=" ...
随机推荐
- 利用pyapns进行ios推送
ios客户端的同事提供了2个证书,分别是aps_development.cer 和 pushdevelopment.p12, 我最终目的就是把这2个证书合并成1个pem证书,然后通过pyapns进行 ...
- XML DOM 遍历Xml文档
1.xml文档内容: <?xml version="1.0" encoding="utf-8" ?> <bookstore> <b ...
- frame嵌套的学习
iframe嵌套的学习 具体代码<br /> window.onload=function(){<br /> var voteid=window.parent.parent.d ...
- GO语言可以直接输出数组
package main import "fmt" func main(){ ]int ;i<;i++{ arr[i]=i } fmt.Printf("%v&quo ...
- angularJs项目实战!03:angularjs与其他类库的协作
引言:angularjs是一个中等重量级的前端开发框架 HTML是一门很好的为静态文本设计的语言,但要构建动态的web应用它就显的乏力了.通常,我们使用以下技术来解决静态网页技术在构建动态应用上的不足 ...
- HIbernate Oracle存储过程
之前为了实现基于Hibernate+Oracle的存储过程调用,发现了一个又一个坑,然后一个一个的尝试解决. 需求:使用Hibernate调用Oracle的存储过程,需要支持的有动态表名.存储过程变量 ...
- Codeforces Round #322 (Div. 2) —— F. Zublicanes and Mumocrates
It's election time in Berland. The favorites are of course parties of zublicanes and mumocrates. The ...
- Git 2.7: 一个新的带来许多新特性和性能提升的主要版本
在2.6版本发布两个月之后,Git 2.7发布.该版本带来了许多新特性以及性能的提升. 本文选取了Git 2.7带来的主要变化: git remote支持get-url子命令,可以显示指定远端的URL ...
- Linux文件io--one简述
什么是文件IO IO就是input/output,输入/输出.文件IO的意思就是读写文件. 文件操作的主要接口API 什么是操作系统API (1)API是一些函数,这些函数是由linux系统提供支持的 ...
- qt下面例子学习(部分功能)
from aa import Ui_Formfrom PyQt4.Qt import *from PyQt4.QtCore import *from PyQt4.QtGui import *from ...