按以前的方法就是直接在sql语句里写各字段就行了,但django使用模型来操作数据库,就不能这样操作了
比如输入是book则过滤字段为title,输入是price则获取大于price的数据,输入author则过滤字段为关联表author中的name
可以将过滤条件组成一个字典,然后以关键字参数形式传递进去
def book_list(request, item, data):
item_dict = {
'book': 'title',
'author': 'authors__name',
'publisher': 'publisher__name',
'price': 'price__gt'
}
books = get_list_or_404(Book, **{item_dict[item]: data})
return render(request, 'books/book_list.html', {'book_list': books})