2011-06-10 59 views
0

当我在我的模型表单中使用auto_now_add时,我收到以下错误。自动填充DateTimeField不工作在Django表格

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修改现场所有的模型类和雏型这里 模型类

Modified field structure

这是我的ModelForm

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 

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

+0

如何使用'auto_now_add'设置您的DateTimeField定义? – 2011-06-10 03:55:25

+0

我已经像这样使用'modified = models.DateTimeField(auto_now_add = True)'。当我给它它说,意想不到的关键字参数'auto_now_add – vkrams 2011-06-10 04:13:38

+0

事情是,当使用窗体和'auto_now_add''DateTimeField'应该是不可编辑的形式(Django文档:“目前实现,设置auto_now或auto_now_add为True将导致该字段具有可编辑= False和空白= True设置。“)。你究竟在哪里得到这个错误?当试图调用窗体或其他地方? – 2011-06-10 04:20:25

回答

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) 
+0

嘿马兹它工作得很好,谢谢。但是,当我提交我的表单日期时间不保存。你能不能请帮助这个 – vkrams 2011-06-10 11:24:06

+0

hey vikram,确保你在窗体上导入日期时间模块。py页面,然后将默认值设置为datetime.datetime.now()让我知道这是否可行。 – 2011-06-10 16:39:49

+0

嘿马兹删除后auto_now_add =真正的工作。谢谢您的帮助 – vkrams 2011-06-13 03:16:52