def update_mptt_cached_fields(self, instance):
        instance._mptt_cached_fields = {}
        field_names = set((self.parent_attr,))
        if self.order_insertion_by:
            for f in self.order_insertion_by:
                if f[0] == '-':
                    f = f[1:]
                field_names.add(f)
        for field_name in field_names:
            if instance._deferred:
                field = instance._meta.get_field(field_name)
                if field.attname in instance.get_deferred_fields() \
                        and field.attname not in instance.__dict__:
                    # deferred attribute (i.e. via .only() or .defer())
                    # It'd be silly to cache this (that'd do a database query)
                    # Instead, we mark it as a deferred attribute here, then
                    # assume it hasn't changed during save(), unless it's no
                    # longer deferred.
                    instance._mptt_cached_fields[field_name] = DeferredAttribute
                    continue
            instance._mptt_cached_fields[field_name] = self.get_raw_field_value(
                instance, field_name)
matches this AppProcess to an AppInstance
dataset/ETHPy150Open django-mptt/django-mptt/mptt/models.py/MPTTOptions.update_mptt_cached_fields--crossover with--dataset/ETHPy150Open OrbitzWorldwide/droned/droned/lib/droned/models/app.py/AppProcess.appinstance