-
-
Save kayluhb/4e06ab4830e29fadc89bf452a7d4d2cb to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from collections import defaultdict | |
from promise import Promise | |
from promise.dataloader import DataLoader | |
def generate_loader(Type, attr): | |
""" Generate a Loader on the fly. | |
""" | |
class Loader(DataLoader): | |
def batch_load_fn(self, keys): | |
results_by_ids = defaultdict(list) | |
lookup = {"{0}__in".format(attr): keys} | |
for result in Type._meta.model.objects.filter(**lookup).iterator(): | |
results_by_ids[getattr(result, attr)].append(result) | |
return Promise.resolve([results_by_ids.get(id, []) for id in keys]) | |
return Loader | |
loader = generate_loader(CommentType, "article_id")() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment