[英]Django how to check whether a model is being created created or update
在不使用信號的情況下,是否可以在模型保存方法中檢查是否正在創建模型或創建或更新模型? 如果可以,怎么辦?
def save(self, force_insert=False, force_update=False, *args, **kwargs):
"""
Override of save() method which is executed the same
time the ``pre_save``-signal would be
"""
models.Model.save(self, *args, **kwargs)
您可以檢查是否已創建主鍵(即不是None ):
def save(self, force_insert=False, force_update=False, *args, **kwargs):
if self.pk is None:
# model is going to be created
else:
# model will be updated
super(YourModelClass, self).save(*args, **kwargs)
注意 :當您檢查只有if id:
它會被當作False
時,如果id
有值0
。 看一下這個:
>>> id = 0
>>> if id:
... print("ID is set to %s" % id)
... # no result, but the value is set!
>>> id = 1
>>> if id:
... print("ID is set to %s" % id)
...
ID is set to 1
>>> id = 0
>>> if id is not None:
... print("ID is set to %s" % id)
...
ID is set to 0
這樣嘗試
def save(self, force_insert=False, force_update=False, *args, **kwargs):
if self.id:
# updated
else:
# inserted
models.Model.save(self, *args, **kwargs)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.