【问题标题】:Auto populate DateTimeField not working in django forms自动填充 DateTimeField 在 django 表单中不起作用
【发布时间】:2011-09-12 04:54:21
【问题描述】:

当我在模型表单中使用 auto_now_add 时出现以下错误。

TypeError: __init__() got an unexpected keyword argument 'auto_now_add'

这是我的模型字段

modified = models.DateTimeField(blank = True)

形式的声明。我在其中一篇帖子中看到过DateTimeField Not Working 添加initial = datetime.datetime.now 进行自动填充

import datetime

modified = forms.DateTimeField(initial = datetime.datetime.now) - 当我使用它时不会出现错误,但日期时间不会自动填充。

我在 self.fields['modified'] 中也使用过同样的方法 - 仍然没有用

上述任何语句均无效。有人帮我解决这个问题。


我在这里粘贴我所有的模型类和模型表单 模型类

class Users(models.Model):
  name = models.CharField(max_length = 100)
  role = models.ForeignKey(RolesConfig, db_column = 'role')
  level = models.ForeignKey(LevelConfig, db_column = 'level')
  team_name = models.ForeignKey(TeamNamesConfig, db_column = 'team_name')
  location = models.ForeignKey(LocationConfig, db_column = 'location')
  modified = models.DateTimeField(blank = True)
  class Meta:
     db_table = u'users'
     def __str__(self):
            return "%s" % (self.ldap)
     def __unicode__(self):
         return u'%s' % (self.ldap)

我已经修改了phpmyadmin中的字段

这是我的模型表单

class TargetForm(forms.ModelForm):
    modified = forms DateTimeField(initial = datetime.datetime.now)
    def __init__(self, *args, **kwargs):
       super(MMPodTargetForm, self).__init__(*args, **kwargs)    
       self.fields['modified'] = forms.DateTimeField(initial = datetime.datetime.now)
    class Meta:
       model = models.Users

当表单加载时,我需要在表单中自动填充当前日期和时间。告诉我我的代码有什么问题。

【问题讨论】:

  • 设置了auto_now_add 后,您的 DateTimeField 定义会是什么样子?
  • 我曾经这样使用过modified = models.DateTimeField(auto_now_add = True)。当我给它时,它说意外的关键字参数'auto_now_add
  • 问题是,当使用表单和auto_now_add 时,DateTimeField 不应该在表单中编辑(Django 文档:“按照目前的实现,将 auto_now 或 auto_now_add 设置为 True 将导致该字段设置可编辑=假和空白=真。”)。你到底在哪里得到这个错误?尝试调用表单或其他地方时?
  • 我已经尝试了所有的组合......它不起作用。
  • 或者只是给我在模型中创建日期时间字段的方法以及如何在模型形式中将初始值设置为datetime.datetime.now()。我从一小时开始尝试,但我没有得到

标签: django forms datetime


【解决方案1】:

我认为错误是因为您将 auto_now_add 额外参数添加到表单而不是模式。尝试将您的模型更改为以下内容,看看是否可以解决问题(未经测试):

class Users(models.Model):
  name = models.CharField(max_length = 100)
  role = models.ForeignKey(RolesConfig, db_column = 'role')
  level = models.ForeignKey(LevelConfig, db_column = 'level')
  team_name = models.ForeignKey(TeamNamesConfig, db_column = 'team_name')
  location = models.ForeignKey(LocationConfig, db_column = 'location')
  modified = models.DateTimeField(auto_now = True)
  class Meta:
     db_table = u'users'
     def __str__(self):
            return "%s" % (self.ldap)
     def __unicode__(self):
     return u'%s' % (self.ldap)

【讨论】:

  • 嘿,它工作得很好,谢谢。但是当我提交表单时,日期时间并没有保存。请问您也可以帮忙吗
  • 嘿 vikram,确保您在 forms.py 页面上导入 datetime 模块,然后将默认设置为 datetime.datetime.now() 让我知道这是否有效。
  • Hey maz 删除 auto_now_add = True 后它起作用了。感谢您的帮助
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-19
  • 2017-07-22
  • 1970-01-01
  • 2011-05-23
相关资源
最近更新 更多