如何在django中为此方案创建queryset

时间:2016-06-18 05:27:58

标签: django python-2.7 filter django-queryset

我有一个动态生成的列表让我们假设

my_list = ['11','13','15']

我的model.py是

class OptionProduct(models.Model):

    product_name = models.ForeignKey('products.Product', null=True, blank=True, verbose_name=_('Product'))
    option_name = models.ForeignKey(Options,null=True, blank=True)
    option_value = models.ForeignKey(OptionValue,null=True, blank=True)

我的列表是指OptionProduct表中的option_value

现在我想获得包含所有选项值的产品

product_name |   option_value | option_name

1           |       11      |   1

1           |       13      |   1

2           |       11      |   1

2           |       13      |   1

3           |       11      |   1

3           |       13      |   1

2           |       15      |   2

1           |       15      |   2

因此它希望将product_name 1和2作为输出,因为它在option_value中具有my_list的全部三个值 每次my_list改变,所以它按照那个

工作

那么如何在django中设置查询

1 个答案:

答案 0 :(得分:2)

我希望这可以通过两个步骤实现。请尝试以下查询。

import collections
option_product_list = OptionProduct.objects.filter(option_value__id__in=my_list).values_list('product_name', flat=True)
output = [item for item, count in collections.Counter(list(option_product_list)).items() if count >= len(my_list)]