Я пытаюсь выполнить запрос django, но с возможностью нескольких разных параметров WHERE. Так что я думал сделать что-то вроде:Использование строки в качестве аргумента для запроса фильтра Django
querystring = "subcat__id__in=[1,3,5]"
Listing.objects.filter(querystring)
Здесь Листинг определяется в моей модели, и она содержит многие-ко-многим поле «подкатегорию». Однако это вызывает значение ValueError, потому что фильтр не принимает строку в качестве аргумента. Есть ли способ в Python, чтобы строка оценивалась как просто ее содержимое, а не как строка? Что-то вроде оператора печати, который печатает значение строки inline, а не стандартного вывода.
Кстати, почему я не просто сделать
querystring = [1,3,5]
Listing.objects.filter(subcat__id__in=querystring)
является то, что я не всегда фильтрации для subcat__id, иногда это один или несколько параметров, и я предпочел бы не должны выпишите кучу отдельных запросов, контролируемых операторами if. Любые советы очень ценятся.
Отлично, это именно то, что я искал! Большое спасибо. – danny 2010-11-28 03:41:59