Форум сайта python.su
У меня и должно вернуть только один ответ, если больше то ошибку.
Вот делаю простой запрос есть ли данные
>>> SpiderCharacteristic.objects.filter(item=SpiderItem.objects.get(article='14773')) [<SpiderCharacteristic: color - сиреневый>, <SpiderCharacteristic: size - S>]
>>>SpiderItem.objects.filter(Q(spidercharacteristic__characteristic_type=SpiderCharacteristicType.objects.get(name='size'), spidercharacteristic__value='S') & Q(spidercharacteristic__characteristic_type=SpiderCharacteristicType.objects.get(name='color'), spidercharacteristic__value=u'сиреневый')) ... []
Офлайн
мой запрос что возвращает?
Офлайн
spidercharacteristic__characteristic_type=SpiderCharacteristicType.objects.get(name='size') # # equal # spidercharacteristic__characteristic_type__name="size"
Офлайн
>>> SpiderItem.objects.filter(Q(spidercharacteristic__characteristic_type=SpiderCharacteristicType.objects.get(name='size'), spidercharacteristic__value='S') | Q(spidercharacteristic__characteristic_type=SpiderCharacteristicType.objects.get(name='color'), spidercharacteristic__value=u'сиреневый')) ... [<SpiderItem: 14908>, <SpiderItem: 14783 >, <SpiderItem: 14781>, <SpiderItem: 14774>, <SpiderItem: 14773>, <SpiderItem: 14773>, <SpiderItem: 14769>]
Отредактировано wizard (Июнь 27, 2013 15:12:27)
Офлайн
FishHookspidercharacteristic__characteristic_type=SpiderCharacteristicType.objects.get(name='size') # # equal # spidercharacteristic__characteristic_type__name="size"
>>>SpiderItem.objects.filter(Q(spidercharacteristic__characteristic_type=SpiderCharacteristicType.objects.get(name='size'), spidercharacteristic__value='S') | Q(spidercharacteristic__characteristic_type=SpiderCharacteristicType.objects.get(name='color'), spidercharacteristic__value=u'сиреневый')) [<SpiderItem: 14908>, <SpiderItem: 14783>, <SpiderItem: 14781>, <SpiderItem: 14774>, <SpiderItem: 14773>, <SpiderItem: 14773>, <SpiderItem: 14769>]
>>> SpiderItem.objects.filter(Q(spidercharacteristic__characteristic_type__name='size', spidercharacteristic__value='S') | Q(spidercharacteristic__characteristic_type__name='color', spidercharacteristic__value=u'сиреневый')) []
Отредактировано wizard (Июнь 27, 2013 15:23:03)
Офлайн
а так
SpiderItem.objects.filter( (Q(spidercharacteristic__characteristic_type__name='size') & Q(spidercharacteristic__value='S')) | (Q(spidercharacteristic__characteristic_type__name='color') & Q(spidercharacteristic__value=u'сиреневый')))
Офлайн
>>> SpiderItem.objects.filter( (Q(spidercharacteristic__characteristic_type__name='size') & Q(spidercharacteristic__value='S')) | (Q(spidercharacteristic__characteristic_type__name='color') & Q(spidercharacteristic__value=u'сиреневый'))) []
>>> SpiderItem.objects.filter(spidercharacteristic__characteristic_type__name='size', spidercharacteristic__value='S') [<SpiderItem: 14781>, <SpiderItem: 14773>, <SpiderItem: 14769>]
Офлайн
вот так отработало
>>> SpiderItem.objects.filter(spidercharacteristic__characteristic_type=SpiderCharacteristicType.objects.get(name='size'), spidercharacteristic__value='S').filter(spidercharacteristic__characteristic_type=SpiderCharacteristicType.objects.get(name='color'), spidercharacteristic__value=u'сиреневый') [<SpiderItem: 14773>]
.filter(spidercharacteristic__characteristic_type=SpiderCharacteristicType.objects.get(name='color'), spidercharacteristic__value=u'сиреневый')
Офлайн
Почему тогда не отрабатывает такой запрос
SpiderItem.objects.filter(Q(spidercharacteristic__value='S') & Q(spidercharacteristic__value=u'сиреневый'))
SpiderItem.objects.filter(spidercharacteristic__value='S').filter(spidercharacteristic__value=u'сиреневый')
Офлайн