この例を自分のコンピューターで実行しようとしましたが、Python を再起動すると、驚くべきことに、作成されたポーリングが保存ステートメントなしでデータベースに保存されます。
コードは次のとおりです。
>>> from polls.models import Poll, Choice
>>> Poll.objects.all()[0].choice_set.create(choice='Not much', votes=0)
<Choice: Not much>
では、どのステートメントによって保存命令が暗示されているのだろうか? このように作成すると、再起動しても生き残れないからです。
>>> c = Choice(choice='Not much3', votes=0)
>>> c.poll_id = 1
選択肢を作成し、外部キー poll_id を最初のポーリングに割り当てています。私は保存しなかったので、これが続くべきではないことを知っています。それは私をだます最初のものです。関連付けられたセット内で作成すると、適切な外部 ID を与えるだけでなく、自動的に保存されると思います。
私はPythonも初めてで、この問題に関する以前の経験に基づいて、セマンティクスは少し緩いように見えました. 最初のコードは、データベースに保存するのではなく、適切な外部 ID を割り当てるだけだと思います。