Process actual join. Registers complex relation join on encountering of the duplicated alias.
(self)
| 154 | return (self.used_aliases, self.select_from, self.columns, self.sorted_orders) |
| 155 | |
| 156 | def _forward_join(self) -> None: |
| 157 | """ |
| 158 | Process actual join. |
| 159 | Registers complex relation join on encountering of the duplicated alias. |
| 160 | """ |
| 161 | self.next_alias = self.alias_manager.resolve_relation_alias( |
| 162 | from_model=self.target_field.owner, relation_name=self.relation_name |
| 163 | ) |
| 164 | if self.next_alias not in self.used_aliases: |
| 165 | self._process_join() |
| 166 | else: |
| 167 | if "__" in self.relation_str and self.source_model: |
| 168 | relation_key = f"{self.source_model.get_name()}_{self.relation_str}" |
| 169 | if relation_key not in self.alias_manager: |
| 170 | self.next_alias = self.alias_manager.add_alias( |
| 171 | alias_key=relation_key |
| 172 | ) |
| 173 | else: |
| 174 | self.next_alias = self.alias_manager[relation_key] |
| 175 | self._process_join() |
| 176 | |
| 177 | def _process_following_joins(self) -> None: |
| 178 | """ |
no test coverage detected