私のモデルとビューファイルはこちらです。私の目的は、自分のモデルに追加したdb( "Entries")に新しい属性を追加し、python manage.pyコマンドを使って移行を行うことでした。これはうまくいっていて、すべてのものに正しいデフォルト "NA"を持つ新しい属性がありました。私は、ファイルを読んで、その列を使って正しい値でdbを更新したいと思っていました。ただし、.save()コマンドが実行された後、DBが正しく更新されましたが、私の例外エラーがスローされ、tryブロックが残っていた点を除いて、 "うまくいきました"。なぜ、もし他の誰がこの問題を持っていたと言うことができる私が思っていたDjango save()を使用してdbを更新すると例外がスローされますが、dbはまだ更新されていますか?
私は他の誰かが同じ問題を持っていたし、(保存についてDjangoのサイト上のドキュメントを読んでかどうかを確認するために探してみました) [https://docs.djangoproject.com/en/1.9/topics/db/models/]
私はこの問題を解決するために将来どのようにするか。
私のdbが更新されたことは、後で "Data.objects.all()"を実行し、 "Probes"と "Entries"をそれぞれ印刷して、それらがすべてNAから何に変更されたかを確認しました。私のファイルはだった。
ありがとうございました。私のviews.py右に
models.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'),)
views.py
def testUpdateDB(passFileName):
f = open(passFileName, 'r')
for Line in f:
Line = Line.replace('\r',"")
Line = Line.replace('\n', "")
row = Line.split(",")
AryList = {"Probes": row[0],
"Entries":row[2],
"Symbol": row[3],
"Pattern":row[4],
"Day1": row[5],
"Day3": row[6]
}
try:
# Update the database
t = Data.objects.get(Probes=AryList["Probes"])
print(t.Probes + " has " + t.Entries + " for its entries, updating to " + AryList["Entries"])
t.Entries = AryList["Entries"]
t.save()
u = Data.objects.get(Probes=AryList["Probes"])
print(u.Probes + " has " + u.Entries + " for its entries now. Update was sussess!")
except:
print("Could not find: " + AryList["Probes"])
後/ "t.save()" プログラムが例外ブロックとプリントにスキップ中そのメッセージを出してください。その後、私はdbを見て、すべてが正しく更新されていることを確認できますが、なぜ例外が発生しましたか?また、なぜtryブロック全体が終了しなかったのですか?誰でもデータベースを更新しようとするとこのエラーが発生します。
なぜあなたは 'u'を持ってきますか?あなたは既に 't'にオブジェクトを持っています – patito
**決して、決して**空の' except'をしないでください。あなたはtryブロックの中に6行あり、例外はそれらのいずれかによって引き起こされる可能性があります。他の(おそらく些細な)エラーがある可能性があります。 Dataが存在しないときに例外をキャッチするだけなら、それをキャッチします: 'except Data.DoesNotExist:'。 –
Patito、私がデバッグしていたとき、私はそれがtだと思ったので、新しいvarにクエリ結果を割り当てようとしました。 –