檢查對象是否是新的常見圖案爲正在測試:檢查是否有OneToOneField對象是新的或者已經存在
self.pk is not None
正如In a django model custom save() method, how should you identify a new object?
描述但當oject是不是真的在一到一個關係到一些其他的對象,說:
class X(models.Model):
bla = models.OneToOneField(Bla)
然後,如果我想創建該對象實例,並將其保存到數據庫中,我有做這個:
x = X(bla=someBla)
x.save()
x.pk不是null,而是x.pk = someBla.pk從一開始。
那麼有沒有任何可行性來檢查這樣的對象是新的還是編輯?
高清調用super.save() save(self,force_insert = False,force_update = False,* args,** kwargs): print(「pk =%s」)%self.pk 從不顯示無,所以不是這樣。 – mnowotka 2013-02-22 12:16:50
對不起,我的壞。爲什麼不使用ForeignKey和unique = True? [查看差異](http://stackoverflow.com/a/5891861/912039)。至於爲什麼會發生這種情況,根據該線程中的答案,OneToOneField表示組合,因此在實例化時分配相關對象的主鍵是有意義的。 – 2013-02-22 13:23:15
因爲我需要有更多的id列。我正在處理lagacy數據庫,我不能將OneToOne更改爲ForeignKey。 – mnowotka 2013-02-22 13:32:14