0

私はこのコードを持っています:

object_id = request.POST.get('id')
try:
    object = request.user.object_set.get(id=object_id, flag=False)
except Object.DoesNotExist:
    object = None

object_id == Noneもし なら、私はいつも を得るだろうと思っobject == Noneた。しかし、いいえ!object_idNone の場合はobject、DB から取得します。リモート デバッグを使用して、最初に評価したときrequest.user.object_set.get(id=object_id, flag=False)に Object インスタンスを取得し、2 回目にこのコードを評価したときに DoesNotExist 例外が発生したことを確認しました。

このコードを書き直して、明示的にチェックobject_idしてから、DB にオブジェクトを取得するように依頼しました。私はただ興味があります-なぜこれが起こるのでしょうか? キャッシュの問題?また、小さなメモ - ローカル マシン (Windows 7) で期待どおりに動作します。サーバー (CentOS) でのみ動作するのではなく、同じバージョンの Python/Django で動作します。

4

1 に答える 1

1

投稿データが期待どおりに送信されていない可能性があります。Pythonコードを実行するときにobject_idを出力してみて、何が得られるかを確認してください。データベース構成ですべてのPKをNOTNULLにすることを実際に検討する必要があります。null値を検索するには、Noneで検索する必要があります

投稿データにデフォルト値を設定してみてください

object_id = request.POST.get('id', None)
于 2012-06-27T06:59:58.727 に答える