私は最近自分のコードでタイプミスをして、同じ動作をしていることに気づいたので、django クエリでの単一アンダースコアと二重アンダースコアの違いは何だろうと思っていました。
>>> underscore = MyModel.objects.filter(foreign_key_id=var)
>>> double_underscore = MyModel.objects.filter(foreign_key__id=var)
>>> underscore == double_underscore
False
>>> list(underscore) == list(double_underscore)
True
クエリセットを比較するためにどの等価メソッドが使用されているかはわかりませんが、Python リストに変換すると、まったく同じ要素が含まれていることがわかります。誰かがここで何が起こっているのかについて洞察を持っていますか?