将今天日期设置为模型中的默认值

时间:2011-02-17 00:19:14

标签: python django date default

如何在模型中将默认值设置为今天日期?

我的模特:      vote_date = models.DateField(_('vote date'),null = False,blank = False)

4 个答案:

答案 0 :(得分:2)

没有一个答案可以解决原始问题。重述问题,如何将日期字段的默认值设置为今天日期,仍然允许用户覆盖默认值。

来自DJango docs:

  

DateField.auto_now
  每次对象自动将字段设置为现在   得救了。对“最后修改”有用   时间戳。请注意当前日期   永远使用;它不仅仅是一个   您可以覆盖的默认值。

     

DateField.auto_now_add
  自动   将对象设置为现在的字段   是第一次创建。对创作很有用   时间戳。注意当前   总是使用日期;它不仅仅是一个   您可以覆盖的默认值。

如果这不仅仅是“何时被添加/编辑”字段,那么答案就是使用

default=datetime.date.today
注意没有parens。这将默认设置为函数,而不是在评估模型时函数返回的值。

答案 1 :(得分:1)

请改为使用auto_now_add,因为auto_now会在修改对象时更改投票日期。

http://docs.djangoproject.com/en/dev/ref/models/fields/#django.db.models.DateField.auto_now_add

答案 2 :(得分:0)

这解决了我的问题:

vote_date = models.DateField(_('vote date'), null=False, blank=False, auto_now=True)

More info about django fields...

答案 3 :(得分:0)

django command extensions可以帮助您完成许多事情:

  
      
  • CreationDateTimeField - 将自动生成的DateTimeField   设置对象第一个时的日期   保存到数据库中。适用于   与弃用的方式相同   auto_now_add keyword。
  •   
  • ModificationDateTimeField - 将自动生成的DateTimeField   设置保存对象的日期   到数据库。以同样的方式工作   作为已弃用的auto_now关键字。
  •   

http://code.google.com/p/django-command-extensions/