最近我在代码中犯了一个错别字,发现得到了相同的结果,因此想知道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列表时,我发现其中包含完全相同的元素。有人能解释一下这里发生了什么吗?