[英]Django update_or_create not updating but inserting instead
使用 update_or_create() 時,我無法更新 django model 中的行。 它將創建一個新行但不會更新它。 在命令行中運行此代碼后,我沒有收到任何錯誤。 我確定我做錯了什么,但我不知道是什么。
model.py
class Test(models.Model):
id = models.AutoField(primary_key=True)
date = models.CharField(blank=True, max_length=100, unique=True)
bites = models.CharField(blank=True, max_length=100)
imgs = models.CharField(blank=True, max_length=100)
.\manage.py shell
from status.models import Test
import pandas as pd
d1 = pd.read_csv('data1.csv')
2020-02-10 2355975072768 939
d2 = pd.read_csv('data2.csv')
2020-02-10 2355975072768 938
for model in d1.itertuples():
model, created = Test.objects.update_or_create(date=model.date, bites=model.total_bytes, imgs=model.total_files, defaults={'date': model.date, 'bites':model.total_bytes, 'imgs':model.total_files })
database_sqlite3 output:
1|2020-02-10|2355975072768|939
for model in d2.itertuples():
model, created = Test.objects.update_or_create(date=model.date, bites=model.total_bytes, imgs=model.total_files, defaults={'date': model.date, 'bites':model.total_bytes, 'imgs':model.total_files })
database_sqlite3 output:
1|2020-02-10|2355975072768|939
2|2020-02-10|2355975072768|938
它不應該更新,因為update_or_create首先嘗試使用提供的 arguments 獲取和更新 object,如果它沒有找到任何東西,它會創建一個新的 object。 它正在創建一個新的 object,因為它在您的數據庫中找不到帶有參數 imgs=938 的 object。
您可以省略imgs
參數以允許 function 找到具有提供的date
和咬合bites
的 object:
model, created = Test.objects.update_or_create(date=model.date, bites=model.total_bytes, defaults={'date': model.date, 'bites':model.total_bytes, 'imgs':model.total_files })
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.