У меня есть 2 модели django:
class Foo(models.Model):
baz = models.CharField()
class Bar(models.Model);
foo = models.ForeignKey(Foo)
qux = models.CharField()
со следующими данными:
Foo
id baz
4 X
5 Y
6 Z
Bar
id foo_id qux
1 4 A
2 5 A
3 5 B
4 6 B
теперь я делаю 2 запроса на Bar, отфильтрованных на qux:
resA = [1, 2] (actually bar instances; shown bar.id for convenience)
resB = [3, 4] (actually bar instances; shown bar.id for convenience)
Какой самый быстрый способ объединить эти списки и сделать их так, чтобы результат был:
resAND = [5] (foo.id)
Сейчас я делаю:
ret = []
nr_sets = 2
foos = Foo.objects.all()
bars = list(resA + resB)
for foo in foos:
test = filter(lambda bar : bar.foo_id == foo.id, bars)
if test == nr_sets;
ret.append(foo)
Это, однако, ужасно медленно.Любые идеи в ускорении этого?Я особенно ищу решения после запроса, но хорошие идеи относительно запросов также приветствуются.