@@ -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