+ self.book_ids = [x['book_id'] for x in chunk_qs.values('book_id')]
+
+ def __getitem__(self, key):
+ if isinstance(key, slice):
+ return self.get_slice(key)
+ elif isinstance(key, int):
+ return self.get_slice(slice(key, key+1))[0]
+ else:
+ raise TypeError('Unsupported list index. Must be a slice or an int.')
+
+ def __len__(self):
+ return len(self.book_ids)
+
+ def get_slice(self, slice_):
+ book_ids = self.book_ids[slice_]
+ chunk_qs = self.chunk_qs.filter(book__in=book_ids)