2
我有以下兩個Django模型:保存模型嘗試創建新的對象
class A:
uuid = CharField(primary_key=True)
code = CharField(unique=True)
class B:
uuid = CharField(primary_key=True)
a = ForeignKey(A, related_name='bs')
def save(**kwargs):
self.a.save(**kwargs)
super(B, self).save(**kwargs)
如果我想在測試情況下使用它們,寫這樣的功能:
def setUp():
a = A.objects.create(uuid='a')
b = B.objects.create(uuid='b', a=a)
我得到的以下錯誤:
UNIQUE constraint failed: app_name_a.code
它看起來像在B的保存方法,它試圖創建另一個具有相同值而不是你的A更新現有的實例。爲什麼會這樣?我正在使用Python 3.5和Django 1.8.14。
順便說一句:我想保存父母的原因是我有更新updated_at
時間戳的保存方法中的功能。
這似乎在文檔中,你指的是默認的是'force_insert =假:
爲了解決這個問題,你不應該爲了讓Django的就創建或更新
self.a
決定通過**kwargs
',但實際上,當我打印'kwargs'時,我發現它的確設置爲True! – physicalattraction@physicalattraction它會被髮送'True',因爲Django基於'self.pk'設置該值爲'None'或不。 – ozgur