搞了一晚上终于搞定了。
想法是:
在人员展示页面中有一个像后台页面list_fiter功能,方便用户对人员分类信息进行筛选,后来看了admin中filter.py的代码,发现不会。决定自己研究一下如何对数据进行筛选。
Model中有年龄、姓名、部门等字段(这里偷懒不贴出来了),用户通过点击超链接可以决定对哪些数据进行筛选
例如要筛选部门,则点击
/HRSystem/personlist/departmen=deparment.name/
要筛选性别,则点击
/HRSystem/personlist/sex=male/
现在可以看到超链接中字段名和字段值都在不停的变化。如果使用Q语句应该可以完成,但是既然使用了模板,就不想写sql语句。贴出代码如下:
ulrs.py:
url(r'^personlist/(?P<filed_name>[\w]+)=(?P<filed_value>[\w]+)/$',
decorators.login_required(PersonListView.as_view(),login_url='HRSystem:login')
,name='personlist'),
views.py
def get_queryset(self,*args,**kwargs):
kw = {
self.kwargs['filed_name'] : self.kwargs['filed_value']
}
person_list = Person.objects.filter(**kw)
return person_list
通过自定义kw字典后,将kw传递到Person.objects.filter()就实现了动态查询及分类