首页 > 解决方案 > Django - 允许手动设置子类的 auto_now 属性

问题描述

我正在使用 Django 1.10

在我们的基本模型(少数模型继承自)中,我们设置

class BaseModel(models.Model):
    created_at = models.DateTimeField(db_index=True, auto_now_add=True)

现在,在特定的子类模型中,我需要覆盖它的保存并更新“created_at”:

class Item(BaseModel):
    title = models.CharField(max_length=200)
    identifier = models.CharField(max_length=15)

    def save(self, *args, **kwargs):
        existing_item = Item.objects.active_and_deleted().get(
                                                  identifier=self.identifier)   
        existing_item.created_at = now()
        super(Item, existing_item).save(args, kwargs)  

更新后的实例 created_at 是“无”。我试过'editable = True'没有成功。任何想法?

标签: pythondjango

解决方案


通过以下示例,更改 的默认参数DateTimeField,django 将允许您手动编辑它:django.utils.timezone.now()save()方法 中分配属性 with

import django

class BaseModel(models.Model):
    created_at = models.DateTimeField(db_index=True,
                   default=django.utils.timezone.now())    

推荐阅读