Я пытаюсь сделать запрос django, но с возможностью нескольких различных WHERE
параметров. Поэтому я думал о том, чтобы сделать что-то вроде:
querystring = "subcat__id__in=[1,3,5]"
Listing.objects.filter(querystring)
Здесь список определен в моей модели и содержит поле «Многие ко многим» subcat
. Однако это вызывает ValueError
, потому что фильтр не принимает строку в качестве аргумента. Есть ли способ в Python, чтобы строка оценивалась как просто ее содержимое, а не как строка? Что-то вроде оператора print, который печатает значение строки в строке, а не в стандартный вывод.
Кстати, причина, по которой я не просто делаю
querystring = [1,3,5]
Listing.objects.filter(subcat__id__in=querystring)
заключается в том, что я не всегда фильтрую для subcat__id
, иногда это один или несколько других параметров, и я бы предпочел не выписывать несколько отдельных запросов, управляемых операторами if. Любой совет очень ценится.