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=" ...
随机推荐
- http head
Accept HTTP_ACCEPT Accept-Charset HTTP_ACCEPT-CHARSET Accept-Encoding HTTP_ACCEPT-ENCODING Accept-La ...
- mark 的总结开发笔记-备
2.播放音乐:-(void) playMusic{@try{//取文件路径NSString *musicFilePath = [[NSBundle mainBundle] pathForResourc ...
- C51的模块化设计方法
一个大的单片机程序往往包含很多模块,我是这样组织的: 1.每一个C源文件都要建立一个与之名字一样的H文件(头文件),里面仅仅包括该C文件的函数的声明,其他的什么也不会有,比如变量的定义啊等等不应该有. ...
- OpenJTAG+Eclipse 3.5+GDB+Mini2440图文教程
OpenJTAG+Eclipse 3.5+GDB+Mini2440图文教程 OpenJTAG与JLink的区别比较: 相同点:都同时具备USB转JTAG.USB转串口功能 差别: 1. 操作系统: O ...
- mv,Directory not empty不能目录覆盖
一.mv /test1/* /test2/test1rm -rf /test1 二. You can however use rsync with the --remove-source-files ...
- 数字积分法DDA(DDA(Digital Differential Analyzer)
数字积分法DDA(DDA(Digital Differential Analyzer) 数字积分法又称数字微分分析法DDA(Digital differential Analyzer),是在数字 ...
- JVM基础和调优(一)
最近的项目中,出现了内存和性能的问题,需要优化,所以趁着这个机会,把自己关于java虚拟机的东整理一下,不对的地方,欢迎指出. 数据类型,因为在java的优化的过程中,检测到的数据类型一般比较的基础, ...
- hdu 5159 Card (期望)
Problem Description There are x cards on the desk, they are numbered from 1 to x. The score of the c ...
- Android SDK及ADT更新访问问题的解决办法
一.访问问题Eclipse使用SDK Manager更新时总是出现问题 Failed to fetch URL https://dl-ssl.google.com/android/repository ...
- [华为机试练习题]55.最大公约数 & 多个数的最大公约数
题目 描写叙述: 输入2个数字,最后输出2个数字的最大公约数 题目类别: 位运算 难度: 0基础 执行时间限制: 无限制 内存限制: 无限制 阶段: 入职前练习 输入: 2个整数 输出: 输出数字1和 ...