使用update_或_create()时,我无法更新django模型中的行。它将创建一个新行,但不会更新它。在命令行中运行此代码后,我没有收到任何错误。我肯定我做错了什么,但我不知道是什么
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首先尝试使用提供的参数获取和更新对象,如果找不到某个对象,它将创建一个新对象。它正在创建一个新对象,因为它在数据库中找不到参数为imgs=938的对象
您可以省略
imgs
参数,以允许函数使用提供的date
和bites
参数查找对象:相关问题 更多 >
编程相关推荐