Это только пример, но с учетом следующей модели:
class Foo(models.model):
bar = models.IntegerField()
def __str__(self):
return str(self.bar)
def __unicode__(self):
return str(self.bar)
И следующий QuerySet
объект:
foobar = Foo.objects.filter(bar__lt=20).distinct()
(имеется в виду набор уникальных Foo
моделей с bar <= 20
), как я могу сгенерировать все возможные подмножества foobar
? В идеале я хотел бы дополнительно ограничить подмножества, чтобы для каждого подмножества x
из foobar
сумма всех f.bar
в x
(где f
- модель типа Foo
) находится между некоторым максимальным и минимальным значением.
Так, например, с учетом следующего экземпляра foobar
:
>> print foobar
[<Foo: 5>, <Foo: 10>, <Foo: 15>]
И min=5
, max=25
, я хотел бы построить объект (предпочтительно QuerySet
, но, возможно, список), который выглядит следующим образом:
[[<Foo: 5>], [<Foo: 10>], [<Foo: 15>], [<Foo: 5>, <Foo: 10>],
[<Foo: 5>, <Foo: 15>], [<Foo: 10>, <Foo: 15>]]
Я экспериментировал с itertools
, но он не очень подходит для моих нужд.
Я думаю это можно сделать с помощью комплекса QuerySet
, но я не знаю, с чего начать.