2009-04-24 2 views
2

Теперь у меня есть этот код:Можно ли динамически определять аргументы функции?

 attitude = request.REQUEST['attitude'] 
     if attitude == 'want': 
      qs = qs.filter(attitudes__want=True) 
     elif attitude == 'like': 
      qs = qs.filter(attitudes__like=True) 
     elif attitude == 'hate': 
      qs = qs.filter(attitudes__hate=True) 
     elif attitude == 'seen': 
      qs = qs.filter(attitudes__seen=True) 

Это будет лучше, чтобы определить имя «attitudes__xxxx» динамически. Есть ли способы сделать это?

Спасибо!

+0

Дубликат: http://stackoverflow.com/questions/353489/cleaner-way-to-query-on-a-dynamic-number-of-columns-in-django –

ответ

7

Да.

qs.filter(**{ 'attitudes__%s'%arg:True }) 
+0

Спасибо! Ваш случай, немного модифицированный, работает правильно: qs.filter (** {'Отношение __% s'% str (отношение): True}) – ramusus

+1

Str (отношение) избыточно - форматирование% s уже делает это! Поэтому ответ С.Лотта совершенен и действительно лучше, чем ваш «маленький модифицированный» вариант. –

Смежные вопросы