这是我的模型和视图文件。我的目标是向我的数组添加一个新属性("条目"),我将其添加到模型中并使用python manage.py命令进行迁移。这很有效,所有东西都有正确默认的新属性" NA"在里面。然后我想读取一个文件并使用该列来更新具有正确值的数据库。它"工作"除了在执行.save()命令之后,它正确地更新了db,但仍然抛出了我的异常错误并离开了try块。
我试着查看其他人是否有同样的问题并阅读django网站上有关save()的文档 [https://docs.djangoproject.com/en/1.9/topics/db/models/]
我想知道为什么以及是否有其他人遇到过这个问题,可以告诉我将来如何解决这个问题。
我知道我的数据库更新的方式后来我运行了一个" Data.objects.all()"并在每一个打印出"探针"和"参赛作品"看到他们都从NA改为我的档案。
感谢您的帮助。
models.py
state
views.py
class Data(models.Model):
Probes = models.CharField(primary_key=True, max_length=50)
Entries = models.CharField(max_length=25, default="NA")
Symbol = models.CharField(max_length=50)
Pattern = models.CharField(max_length=25)
Day1 = models.FloatField()
Day3 = models.FloatField()
class Meta:
unique_together = (('Probes', 'Symbol', 'Pattern'),)
在" t.save()"之后/期间的views.py中程序跳转到异常块并打印出该消息。之后我可以查看数据库并看到所有内容都已正确更新,但为什么会发生异常呢?还有为什么没有整个试块完成?尝试更新数据库时,其他人都有此错误。
答案 0 :(得分:0)
尝试使用transaction.atomic()如果发生任何错误,将回滚块中存在的所有代码。除非整个块执行,否则不会保存任何内容。
上面的链接中有示例,请尝试在原子事务中使用所有save()。
答案 1 :(得分:0)
标题记录导致了问题。丢弃文件的第一条记录后,一切都很顺利。
这是更新后的Views.py文件
views.py
def testUpdateDB(passFileName):
f = open(passFileName, 'r')
discardHeader = f.readline() # New line which removes header record
for Line in f:
# Everything else stay the same as before #
感谢大家的帮助。