我想有一對夫婦在我的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。 如果還有其他答案,請等待。 –