'Returns a django.forms.Field instance for this database Field.'

def formfield(self, form_class=forms.CharField, **kwargs):

    defaults = {'required': (not self.blank), 'label': capfirst(self.verbose_name), 'help_text': self.help_text}
    if self.has_default():
        if callable(self.default):
            defaults['initial'] = self.default
            defaults['show_hidden_initial'] = True
        else:
            defaults['initial'] = self.get_default()
    if self.choices:
        include_blank = (self.blank or (not (self.has_default() or ('initial' in kwargs))))
        defaults['choices'] = self.get_choices(include_blank=include_blank)
        defaults['coerce'] = self.to_python
        if self.null:
            defaults['empty_value'] = None
        form_class = forms.TypedChoiceField
        for k in kwargs.keys():
            if (k not in ('coerce', 'empty_value', 'choices', 'required', 'widget', 'label', 'initial', 'help_text', 'error_messages', 'show_hidden_initial')):
                del kwargs[k]
    defaults.update(kwargs)
    return form_class(**defaults)
