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

def formfield(self, form_class=None, choices_form_class=None, **kwargs):

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