I understand why it doesn't - you need two underscores to follow references:

>>> AModel.objects.get(somemodel__id=4)
<AModel: TheModelIWanted>

But this feels like an asymmetry, since after you get the model, you can read / assign to the foreignkey's id:

>>> obj = AModel.objects.get(somemodel__id=4)
>>> obj.somemodel
<SomeModel: OtherModel>
>>> obj.somemodel_id #Specifically this - why does this work, but I can't query for it without the JOIN to the related table?
4L
>>> obj.somemodel.id
4L