@@ -110,16 +110,20 @@ def join(self, compiler, connection):
110110 if extra :
111111 columns = []
112112 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 ))
118122 replacements = {}
119123 for col , parent_pos in columns :
120124 # Make all columns in as main collection columns.
121125 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 :
123127 column_target .target .db_column = f"${ parent_template } { parent_pos } "
124128 column_target .target .set_attributes_from_name (f"${ parent_template } { parent_pos } " )
125129 replacements [col ] = column_target
0 commit comments