Model and its behaviors do not have a method or closure named "optgroup"
Few things - you need to add the options to the render function so they are passed into the template. Also, check what I did below for the $widthsOptions. Each option needs a label and value key/value pair.

public function getInputHtml($name, $value)
{
    // call our service layer to get a current list of widths
    $widths = craft()-&gt;columnWidth_widths-&gt;getAllWidths();

    // create an array for the widths 
    $widthsOptions = array();

    // populate the $widthsOptions array with $widths
    foreach ($widths as $width )
    {
        $widthsOptions[] = array(
            'label' =&gt; $width-&gt;name, //this should be whatever you want to display in dropdown
            'value' =&gt; $width-&gt;name //this should be the value you want passed to the database
        );
    }

    return craft()-&gt;templates-&gt;render('columnwidth/_fieldtypes/widths', array(
        'name'      =&gt; $name,
        'values'    =&gt; $value,
        'options'   =&gt; $widthsOptions
    ));
}


Your field type template should be something like this:

{% import "_includes/forms/" as forms %}
​
{{ forms.selectField({
    instructions: "Select the width of your column"|t,
    id: 'columnWidth',
    name: 'columnWidth',
    options: options,
    value: values
}) }}