'Pickling should return the model._meta.fields instance of the field,
not a new copy of that field. So, we use the app cache to load the
model and then the field back.'

def __reduce__(self):

    if (not hasattr(self, u'model')):
        return (_empty, (self.__class__,), self.__dict__)
    if self.model._deferred:
        raise RuntimeError(u"Fields    of    deferred    models    can't    be    reduced")
    return (_load_field, (self.model._meta.app_label, self.model._meta.object_name, self.name))
