public function get_field($field_name)
 {
     $fields = $this->get_fields();
     if (preg_match('/^(\\w+)(?:__|\\.)(\\w+)$/', $field_name, $matches)) {
         $table_name = $matches[1];
         $just_field_name = $matches[2];
         if ($table_name == $this->get_name()) {
             #$field = parent::get_field($just_field_name);
             #$field->set_name("$table_name.$just_field_name");
             #return $field;
             #return parent::get_field($field_name);
             return parent::get_field("{$table_name}.{$just_field_name}");
         } else {
             $foreign_key_table_names = $this->get_foreign_key_table_names();
             $database = $this->get_database();
             foreach ($foreign_key_table_names as $f_k_t_n) {
                 if ($f_k_t_n == $table_name) {
                     $table = $database->get_table($table_name);
                     $field = $table->get_field($just_field_name);
                     $field->set_name("{$table_name}.{$just_field_name}");
                     return $field;
                 }
             }
         }
     } else {
         #echo "\$field_name: $field_name\n";
         #echo "Should prepend table_name?\n";
         return parent::get_field($field_name);
     }
     throw new Exception("No field called {$field_name} in " . $this->get_name());
 }