Python 保存到django数据库
我也在尝试使用append将信息保存到ArrayField。根据这一点,这应该是可能的,但我不能让它工作。我不是在创建一个新对象,它已经存在了。我只需要在ArrayField中添加额外的信息 代码段:Python 保存到django数据库,python,django,python-2.7,django-models,Python,Django,Python 2.7,Django Models,我也在尝试使用append将信息保存到ArrayField。根据这一点,这应该是可能的,但我不能让它工作。我不是在创建一个新对象,它已经存在了。我只需要在ArrayField中添加额外的信息 代码段: def isInDatabase(catInfo): cat = catagories.objects catName = str(catInfo) iban = catInfo.getIban() try: cat.get(Naam = catNa
def isInDatabase(catInfo):
cat = catagories.objects
catName = str(catInfo)
iban = catInfo.getIban()
try:
cat.get(Naam = catName)
except ObjectDoesNotExist:
print catName, 'is not in database'
# NOTE: create catagory
p = cat.create(Naam = catName, Rekening = [iban])
print catName, 'Has been stored in the database with', iban
else:
ibanList = cat.get(Naam = catName).Rekening
editCat = cat.get(Naam = catName)
print catName,'is in db, the following ibans are stored:\n\n', ibanList,'\n\n'
if iban in ibanList:
print iban,'is already in the list\n'
else:
ibanList.append(iban)
editCat.save()
print 'Updated list for',catName,'with -->',iban,'\nlist is now -->', ibanList,'\n'
editCat.save()
是不保存的save命令
models.py
class catagories(models.Model):
Naam = models.CharField(max_length=10)
Rekening = ArrayField(models.CharField(max_length = 34), blank = True)
def __str__(self):
return self.Naam
那么我需要做什么修改才能将其保存到数据库中呢。我没有收到任何错误,因此脚本运行正常,但不会保存到数据库。这是问题代码:
ibanList = cat.get(Naam = catName).Rekening
editCat = cat.get(Naam = catName)
...
ibanList.append(iban)
editCat.save()
editCat
保持不变。仅使用一次对数据库的调用,然后从要编辑的对象获取ibanList
editCat = cat.get(Naam = catName)
ibanList = editCat.Rekening
当您使用
editCat=cat.get(Naam=catName)
初始化editCat
时,您实际上创建了一个与ibanList
无关的新变量。您需要做的是更改已经检索到的值。可能的解决办法是
editCat = cat.get(Naam = catName)
editCat.Rekening.append(iban)
editCat.save()
另一个值得一提的问题是存在冗余的db调用。每次调用get
,实际上都会对db发出新的请求(确切地说是在计算queryset时)。最好只从db中检索一次值,并对其进行操作