1. Valerikk

    15.04.2009

    0 ↑
    0 ↓
    Подскажите, плиз.Нужно реализовать по таблице фильтр по нескольким полям. Но в зависимости от неких условий, которые выбираются в 4-х выпадающих списках (один из которых формируется динамически), одном чекбоксе и вводимом диапазоне значений. Есть ли возможность (как макроподстановка в FoxPro, например) сформировать команду в виде текстовой строки, а потом эту команду выполнить? Или какие-то другие варианты посоветуйте.
  2. Иван Сагалаев

    15.04.2009

    0 ↑
    0 ↓

    Джанговский ORM принимает фильтры в виде питоньих keyword-аргументов. В Питоне они (аргументы) изоморфны просто dict'у: можно из dict'а сделать keyword-аргументы и обратно. Соответственно, можно делать так:

    lookup = {
        'name__startswith': form.cleaned_data['name'],
    }
    if form.cleaned_data['check_year']:
        lookup['year'] = form.cleaned_data['year']
    Model.objects.filter(**lookup)
    

    Вот эта **lookup как раз и означает "использовать dict lookup в качестве keyword-аргументов.

  3. Valerikk

    15.04.2009

    0 ↑
    0 ↓
    Уловил. Спасибо большое.
  4. redbaron

    04.05.2009

    0 ↑
    0 ↓
    Читаю и удивляюсь, как Иван умудрился понять вопрос, да еще и его понимание совпало с пониманием автора.
  5. Иван Сагалаев

    04.05.2009

    0 ↑
    0 ↓

    Я два года работал в тех. поддержке интернет-провайдера :-)

Внимание! Это довольно старый топик, посты в него не попадут в новые, и их никто не увидит. Пишите пост, если хотите просто дополнить топик, а чтобы задать новый вопрос — начните новый.