def get_queryset(self): if hasattr(self.instance, "detail_history"): from cyano.models import Revision #print "m2m history" try: return self.instance._prefetched_objects_cache[self.prefetch_cache_name] except (AttributeError, KeyError): db = self._db or router.db_for_read(self.instance.__class__, instance=self.instance) ct_id = ContentType.objects.get_for_model(self.model).pk queryset = Manager.get_queryset(self).using(db)._next_is_sticky().all()#.filter(**self.core_filters) revision = Revision.objects.filter( object_id__in=queryset, content_type__pk=ct_id, detail_id__lte=self.instance.detail_history).order_by("-detail").first() data = [] if revision is not None: new_data = json.loads(revision.new_data) if self.prefetch_cache_name in new_data: data = new_data[self.prefetch_cache_name] ##print "History:", self.instance.detail_history, "Data:", data queryset = queryset.filter(pk__in=data) for item in queryset: setattr(item, "detail_history", self.instance.detail_history) #queryset = queryset.filter(pk__in = vals) ##print "Queryset:", queryset#, self.core_filters, self.target_field_name, self.source_field_name, self._fk_val return queryset else: queryset = super(HistoryManyRelatedManager, self).get_queryset() #print queryset return queryset