2016-06-18 1 views
0

Привет У меня есть один динамически список позволяет нам предположить,Как я могу сделать 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) 

мой список см OPTION_VALUE в OptionProduct таблица

теперь я хочу, чтобы получить этот продукт, в котором все значения параметра, которые включают в себя

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 в качестве выхода, потому что все три значения my_list в OPTION_VALUE каждый раз, когда my_list изменяется так, что работать в соответствии с этим

так, как я могу сделать запрос установить в django

+0

Вы должны сначала отформатировать свой код. –

+0

Возможный дубликат [Django filter queryset \ _ \ _ in для \ * каждый \ * элемент в списке] (http://stackoverflow.com/questions/8618068/django-filter-queryset-in-for-every-item-in -список) – solarissmoke

ответ

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)]