select * ... will take more work. If you can crop the right columns on the right side
table=SomeModel._meta.db_table
join_column_1=SomeModel._meta.get_field('field1').column
join_column_2=SomeModel._meta.get_field('field2').column
join_queryset=SomeModel.objects.filter()
querystr=join_queryset.query.__str__()
rh_alias=join_queryset.query.join((table,table,join_column_1,join_column_2))
join_queryset=join_queryset.extra(select=dict(rhs_col1='%s.%s' % (rhs,join_column_2)),
where=['%s.%s = %s.%s' % (table,join_column_2,rh_alias,join_column_1)])
Add additional columns available for dict selection.
Additional restrictions are combined in WHERE after ON (), which your SQL engine may not optimize well.
source
share