我正在學習 Django 并做一些專案,其中我有三個具有以下關系的模型:
#models.py
class Model1(models.Model):
status = models.CharField(max_length = ....)
class Model2(models.Model):
model1 = models.ForeignKey(Model1, ....)
name = models.CharField(max_length = ....)
class Model3(models.Model):
model2 = models.ForeignKey(Model2, ....)
name = models.CharField(max_length = ....)
我想根據 Model3 實體上的 views.py 中發生的邏輯更新 Model1 中的狀態欄位,即
視圖.py
def model3_view(request, pk):
model1 = get_object_or_404(Model1, pk=pk)
model3 = Model3.objects.filter(model1_id=model1.pk)
my logic goes here....
if <my logic outcome> == True:
model1_status = Model1.objects.update_or_create(status='closed', pk=model1.pk)
但是,我收到錯誤UNIQUE 約束失敗:model1_model1.id。
我試圖參考我的 model2 實體 pk 并且它作業正常,即 model1_status = Model1.objects.update_or_create(status='closed', pk=model2.pk) 但無法弄清楚我如何為 1 級執行此操作,即模型1 PK...
uj5u.com熱心網友回復:
Unique 錯誤很可能是因為update_or_create它只是試圖創建然后獲取沖突的主鍵。
因為您已經在這里獲得了Model1:model1 = get_object_or_404(Model1, pk=pk)您可以將其替換為update_or_create:
model1.status = 'closed'
model1.save()
注意:我最初沒有將此作為答案發布,因為我不確定是否 update_or_create是強制性的。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/521191.html
