docs: def set_right_table(self, table):
          """
          Sets the right table for this join clause and try to automatically set the condition
          if one isn't specified
          """
          self.right_table = table
          if self.left_table is None:
              return
  
          # find table prefix
          if type(self.left_table) is ModelTable and type(self.right_table) is ModelTable:
              # loop through fields to find the field for this model
  
              # check if this join type is for a related field
              for field in self.get_all_related_objects(self.left_table):
                  related_model = field.model
                  if hasattr(field, 'related_model'):
                      related_model = field.related_model
                  if related_model == self.right_table.model:
                      if self.right_table.field_prefix is None:
                          self.right_table.field_prefix = field.get_accessor_name()
                          if len(self.right_table.field_prefix) > 4 and self.right_table.field_prefix[-4:] == '_set':
                              self.right_table.field_prefix = self.right_table.field_prefix[:-4]
                      return
  
              # check if this join type is for a foreign key
              for field in self.left_table.model._meta.fields:
                  if (
                      field.get_internal_type() == 'OneToOneField' or
                      field.get_internal_type() == 'ForeignKey'
                  ):
                      if field.remote_field.model == self.right_table.model:
                          if self.right_table.field_prefix is None:
                              self.right_table.field_prefix = field.name
                          return