Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 11, 2012 17:14:31

kristus
Зарегистрирован: 2012-10-27
Сообщения: 40
Репутация: +  0  -
Профиль   Отправить e-mail  

фильтры джанго

ТАкая проблема!есть список со значениями фильтров,когда составляю выражение из этих значений получается str тип и имя.objects.filter(str) не хавает его.как этот str перевести в <class ‘django.db.models.query_utils.Q’>?

for i in range(0, len(b)) :
    st0 = "|"
    if i != (len(b) - 1) :
        st = "Q" + "(" + "Machine" + "=" + "'" +str(b[i]) + "'" + ")" + st0 
    else : 
        st = "Q" + "(" + "Machine" + "=" + "'" +str(b[i]) + "'" + ")" 
    st2.append(st)    
 st2 =  Q(Machine='Lancelot')|Q(Machine='Guinevere')
data = serializers.serialize("json", History.objects.filter(st2)) # здесь str (st2) не проходит
Или может кто-нибудь знает как сделать множественную выборку по-другому!
спасибо!

Офлайн

#2 Ноя. 12, 2012 05:02:45

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

фильтры джанго

filters=[Q(Machine=i) for i in b]
q=Q()
for filter in filters:
   q | = filter
    
history=History.objects.filter(q)
Следующий свой вопрос по Django задавайте сюда



Офлайн

#3 Ноя. 12, 2012 05:50:07

kristus
Зарегистрирован: 2012-10-27
Сообщения: 40
Репутация: +  0  -
Профиль   Отправить e-mail  

фильтры джанго

Spasibo!

Офлайн

#4 Ноя. 12, 2012 18:17:25

reclosedev
От: Н.Новгород
Зарегистрирован: 2012-03-29
Сообщения: 870
Репутация: +  173  -
Профиль   Отправить e-mail  

фильтры джанго

Кстати, в данном случае возможно подойдет __in:

History.objects.filter(Machine__in=b)

Офлайн

#5 Ноя. 13, 2012 14:58:19

kristus
Зарегистрирован: 2012-10-27
Сообщения: 40
Репутация: +  0  -
Профиль   Отправить e-mail  

фильтры джанго

До ответов, реализовал так:

for i in b :
    data  = serializers.serialize("json", History.objects.filter(sets = i))
    data2 = json.loads(data)
    k.append(data2)
не рационально,конечно но…

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version