私はかなり複雑なロジックを持っており、今発見したように、レコードが単純に消えてしまいます。コードのロジックをレイアウトしてみます...
- データベースには約1,000のクライアントがあります
- 年に一度、2通の手紙を順番にお送りします(1通目は先に、2通目は約1ヶ月後)
- 私たちが手紙を送ることができるようにするために、各クライアントの情報について約30の小切手と残高のセットをチェックする必要があります. 「クライアント X の記録はありますか」、「クライアント Y に関する情報はありますか」などです。手紙を送る前にファイルに保存しておく必要のある一連の情報です。
- 情報が不足しているクライアントのために、情報が不足しているクライアントのリストと、不足している情報を示す「ステージング エリア」を作成しました。
- クライアントはすべての情報 (つまり、最初の手紙を送ることができます) を「最初の手紙の準備ができました」エリアに移動します。
- いつでも、クライアントが「最初の手紙の準備」エリアを離れて「ステージングエリア」に戻る原因となる情報を失う可能性があります.
- ユーザーは状況を修正 (不足している情報を追加) して、クライアントを「Ready for First Letter」領域に戻す必要があります。
- 最初のレターが送信された後、クライアントは「2 番目のレターの準備」エリアに移動します。繰り返しになりますが、情報が失われた場合はいつでも、クライアントは「Ready for Second Letter」エリアから出て、ステージング エリアに戻る必要があります。
私が見つけたのは、クライアントが「最初の手紙の準備ができている」エリアにいるということです。その後、いくつかの情報が失われます. クライアントは「Stagin Area」に移動するだけです。しかし、単純な記録は消えます!削除されているようで、コードのどこにもキーワードが見つかりませんdelete
。どうしてこうなるのか不思議です。
コードを投稿せずに「あなたは間違っている」タイプのコメントを作成するのは難しいことはわかっていますが、これをすべて実現するためのコードがたくさんあるため、何を投稿すればよいかわかりません (私は起こっていることの多くを一般化しています)。
レコードが Django によって削除されたり削除されたりする状況があるかどうか疑問に思っていると思います。これは起こりますか?もしそうならクレイジーに見える...
ありがとう
* 編集 *部分的な洞察:
謎が起こっている場所を突き止めたと思います。クライアントのレコードから特定の情報を削除して、クライアントが実際にステージング エリアに戻るかどうかをテストしてきました。この特定の情報を削除すると、クライアントの記録も消えます。これが私のコードです(コピーして貼り付けたのではなく、書き直したアイデアです):
c = client.objects.get(pk=1)
tmp = c.specificInfo
tmp.delete()
c.specificInfo = None
c.save()
c.specificInfo
これは外部キーであることに注意してください。したがって、おそらく別のレコードを割り当ててからtmp
、そのアイテムを削除していました。そうすることには、削除するという副作用もありclient
ます。
非常に紛らわしいです...