Django динамические объекты Q в общем виде
Я хочу иметь возможность передать переменную, захваченную в URL-адресе, объекту Q для общего представления.
Я создал общий вид, который импортируется как my_views.view, который обрабатывает такие вещи, как нумерация страниц, сортировка, фильтрация и т. Д.
Мне нужно использовать объекты Q, потому что для некоторых страниц понадобятся фильтры OR. Каждая страница также будет фильтроваться на основе различных полей (и моделей) (отсюда и общий вид).
Пример:
view_customers_info = {
"queryset" : Customer.all(),
'qobject': Q(status=stat),
"extra_context" : {
"title" : 'View Customers',
},
'template_name': 'customer/view.html',
}
urlpatterns = patterns('',
url(r'^customer/(?P<stat>\w+)/$', my_views.view, view_customers_info),
)
В этом примере эта строка жалуется на то, что stat не является глобальным именем:
'qobject': Q(status=stat),
Как передать переменную, попавшую в URL, в словарь view_customers_info?
Я не могу просто переместить этот объект Q в общее представление, потому что другие страницы будут иметь объекты типа Q, как показано ниже:
'qobject': (Q(type=type) | Q(status=stat)),
Благодарю.
2 ответа
Я думаю, что вы можете сделать это только, обернув общий вид с пользовательским представлением / функцией. Смотрите также здесь:
Я думаю, что вы просто пропустили кавычки вокруг названия поля.
'qobject': Q(status=("%s" % stat)),