2011-08-11 44 views
0

基本上,我有这样的代码在我的ModelForm:Django的DateTimeField字段成为空时不能编辑

def save(self): 
    if not self.instance.pk: 
     self.instance.author = self.author 
     self.instance.date_sorted = datetime.now() 
    return super(PostForm, self).save(commit = True) 

我的目的,它仅保存在添加一条记录date_sorted,而忽略了它,当编辑。因为在某些时候我想一些date_sorted的为空(故意)

date_sorted = models.DateTimeField(blank = True, null = True) 

我定义空白= True和空=真对:我date_sorted字段定义为。

添加时,date_sorted将存储当前日期和时间,但在编辑(更新其他字段)时,date_sorted会更改为NULL。试图在网络上找到,但没有运气:(感谢任何帮助类似问题

回答

3

试试这个,它会隐藏表单日期时间字段和全自动设定日期当您发布的消息:。

date_sorted = models.DateTimeField(auto_now=True) 

而且,你可以使用save_model方法:

def save_model(self, request, obj, form, change): 
    super(MessageAdmin, self).save_model(request, obj, form, change) 

我用它进行管理面板,不知道它是如何工作的其他实现,但尝试看看它您可以在保存对象之前和之后输入你的代码。 ,所以你可以修改obj.date_sorted然后保存模型。

0

models.DateTimeField有两个属性:auto_now_add=True|Falseauto_now=True|False。 他们都会自动将字段设置为editable=False。 使用auto_now=True来设置每次更新字段时的当前日期时间。 使用auto_now_add=True设置当前时间只有第一次对象被保存。

相关问题