我想有一对夫妇在我的Django模型字段,只在创作, 等,其仅在更新保存的保存的。 例如“date_created”和“author”与“date_edited”和“last_editor”。模型建立与更新在Django
如何实现这一目标?如何创建2个不同的场地/工作流程保存和更新的模型,这将是有效无论从管理,并从我可以创建自定义客户端的形式保存时?
编辑:
场我说的是不会出现的形式,他们将在视图中创建。
我想有一对夫妇在我的Django模型字段,只在创作, 等,其仅在更新保存的保存的。 例如“date_created”和“author”与“date_edited”和“last_editor”。模型建立与更新在Django
如何实现这一目标?如何创建2个不同的场地/工作流程保存和更新的模型,这将是有效无论从管理,并从我可以创建自定义客户端的形式保存时?
编辑:
场我说的是不会出现的形式,他们将在视图中创建。
如果要保留自定义视图和管理员的功能,最好的地方应该是保存方法。其次,如果您试图保存编辑日期时间,我会建议查看和auto_now
与DateTimeField
或DateField
一起使用的参数。它们提供了一种方法来保存创建和最新编辑的Timstamp的价值。看看here。最后,其他解决方案可以使用Django Signals
,这将为您提供一种在模型调用save方法时调用方法的方法。这将帮助你解耦逻辑。
class ExModel(models.Model):
...
...
def save(self):
if self.id:
#update logic here
else:
#New creation logic here
您可以覆盖模型的save
方法,并确定创建和如果主键被重视或不检查更新在那里。
def save(self,*args,**kwargs):
if not self.pk: #object is being created
self.author = 'abc'
self.date_created = datetime.now()
else: #object is being updated
self.last_editor = 'abc'
self.date_edited = datetime.now()
super(MyModel,self).save(*args,**kwargs)
与自我.pk一样,它也发生在我身上。无论如何,我希望这些事情会有某种捷径。 –
不需要在保存方法上设置日期。改为使用此模型定义: date_created = models.DateTimeField(auto_now_add = True) date_edited = models.DateTimeField(auto_now = True) – dannyroa
是的,auto_now和auto_now_add看起来没问题。 012vUpvote。 如果还有其他答案,请等待。 –