@@ -110,16 +110,20 @@ def join(self, compiler, connection):
110
110
if extra :
111
111
columns = []
112
112
for expr in extra .leaves ():
113
- if hasattr (expr , "lhs" ) and isinstance (expr .lhs , Col ):
114
- columns .append ((expr .lhs , len (lhs_fields )))
115
- lhs_fields .append (expr .lhs .as_mql (compiler , connection ))
116
- if hasattr (expr , "rhs" ) and isinstance (expr .rhs , Col ):
117
- columns .append ((expr .rhs , None ))
113
+ for hand_side in ["lhs" , "rhs" ]:
114
+ hand_side_value = getattr (expr , hand_side , None )
115
+ if isinstance (hand_side_value , Col ):
116
+ if hand_side_value .alias != self .table_name :
117
+ pos = len (lhs_fields )
118
+ lhs_fields .append (expr .lhs .as_mql (compiler , connection ))
119
+ else :
120
+ pos = None
121
+ columns .append ((hand_side_value , pos ))
118
122
replacements = {}
119
123
for col , parent_pos in columns :
120
124
# Make all columns in as main collection columns.
121
125
column_target = Col (compiler .collection_name , expr .output_field .__class__ ())
122
- if column_target . alias != self . table_name :
126
+ if parent_pos is not None :
123
127
column_target .target .db_column = f"${ parent_template } { parent_pos } "
124
128
column_target .target .set_attributes_from_name (f"${ parent_template } { parent_pos } " )
125
129
replacements [col ] = column_target
0 commit comments