Django - 允许为Sub-class手动设置auto_now属性

时间:2018-04-29 08:28:03

标签: python django

我正在使用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'失败了。 有什么想法吗?

1 个答案:

答案 0 :(得分:0)

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

import django

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