public function has_field($field_name)
 {
     #echo "\$field_name: $field_name\n";
     $fields = $this->get_fields();
     if (preg_match('/^(\\w+)(?:__|\\.)(\\w+)$/', $field_name, $matches)) {
         $table_name = $matches[1];
         #echo "\$table_name: $table_name\n";
         $just_field_name = $matches[2];
         #echo "\$just_field_name: $just_field_name\n";
         if ($table_name == $this->get_name()) {
             #echo "Field is in this table.\n";
             #echo 'get_class(parent): ' . get_class(parent) . "\n";
             #return parent::has_field($just_field_name);
             return parent::has_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);
                     return $table->has_field($just_field_name);
                 }
             }
         }
     } else {
         return parent::has_field($field_name);
     }
     return FALSE;
 }