Найти - Пользователи
Полная версия: Помогите составить запрос.
Начало » Django » Помогите составить запрос.
1 2
wizard
У меня и должно вернуть только один ответ, если больше то ошибку.

Вот делаю простой запрос есть ли данные
>>> 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'сиреневый'))
...         
[]

он ничего не находит.
ilnur
мой запрос что возвращает?
FishHook
spidercharacteristic__characteristic_type=SpiderCharacteristicType.objects.get(name='size')
#
# equal
#
spidercharacteristic__characteristic_type__name="size"
wizard
>>> 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>]

Но это OR в таблице точно есть записи с size=S или color=сиреневый, а чтобы и то и то только одна запись.
wizard
FishHook
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>]

>>> SpiderItem.objects.filter(Q(spidercharacteristic__characteristic_type__name='size', spidercharacteristic__value='S') |  Q(spidercharacteristic__characteristic_type__name='color', spidercharacteristic__value=u'сиреневый'))
[]
FishHook
а так
SpiderItem.objects.filter( (Q(spidercharacteristic__characteristic_type__name='size') & 
Q(spidercharacteristic__value='S')) |  (Q(spidercharacteristic__characteristic_type__name='color') & Q(spidercharacteristic__value=u'сиреневый')))
wizard
>>> 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>]
wizard
вот так отработало
>>> 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'сиреневый')

так как у одних товаров это есть у других нет?
wizard
Почему тогда не отрабатывает такой запрос
SpiderItem.objects.filter(Q(spidercharacteristic__value='S') & Q(spidercharacteristic__value=u'сиреневый'))

Если вот такой работает правильно
SpiderItem.objects.filter(spidercharacteristic__value='S').filter(spidercharacteristic__value=u'сиреневый')
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB