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