'Validate the fields specification in `flds` from a ModelAdmin subclass
`cls` for the `model` model. Use `label` for reporting problems to the user.
The fields specification can be a ``fields`` option or a ``fields``
sub-option from a ``fieldsets`` option component.'

def check_field_spec(self, cls, model, flds, label):

    for fields in flds:
        if (type(fields) != tuple):
            fields = (fields,)
        for field in fields:
            if (field in cls.readonly_fields):
                continue
            try:
                f = model._meta.get_field(field)
            except models.FieldDoesNotExist:
                continue
            if (isinstance(f, models.ManyToManyField) and (not f.rel.through._meta.auto_created)):
                raise ImproperlyConfigured(("'%s.%s'    can't    include    the    ManyToManyField    field    '%s'    because    '%s'    manually    specifies    a    'through'    model." % (cls.__name__, label, field, field)))
