

def describe_form(label, fields=None):
    '\n    Returns a string describing a form based on the model\n    '
    from django.db.models.loading import get_model
    try:
        (app_name, model_name) = label.split('.')[(- 2):]
    except (IndexError, ValueError):
        raise CommandError('Need application and model name in the form: appname.model')
    model = get_model(app_name, model_name)
    opts = model._meta
    field_list = []
    for f in (opts.fields + opts.many_to_many):
        if (not f.editable):
            continue
        if (fields and (f.name not in fields)):
            continue
        formfield = f.formfield()
        if ('__dict__' not in dir(formfield)):
            continue
        attrs = {
            
        }
        valid_fields = ['required', 'initial', 'max_length', 'min_length', 'max_value', 'min_value', 'max_digits', 'decimal_places', 'choices', 'help_text', 'label']
        for (k, v) in formfield.__dict__.items():
            if ((k in valid_fields) and (v is not None)):
                if ((k == 'required') and v):
                    continue
                if ((k == 'help_text') and (not v)):
                    continue
                if (k == 'widget'):
                    attrs[k] = v.__class__
                elif (k in ['help_text', 'label']):
                    attrs[k] = force_text(v).strip()
                else:
                    attrs[k] = v
        params = ', '.join([('%s=%r' % (k, v)) for (k, v) in attrs.items()])
        field_list.append(('    %(field_name)s = forms.%(field_type)s(%(params)s)' % {
            'field_name': f.name,
            'field_type': formfield.__class__.__name__,
            'params': params,
        }))
    return ('\nfrom django import forms\nfrom %(app_name)s.models import %(object_name)s\n\nclass %(object_name)sForm(forms.Form):\n%(field_list)s\n' % {
        'app_name': formfield,
        'object_name': opts.object_name,
        'field_list': '\n'.join(field_list),
    })

dataset/ETHPy150Open django-extensions/django-extensions/django_extensions/management/commands/describe_form.py describe_form/VarMisuse@397/649 `app_name`->`formfield`