要实现的功能:
继昨天实现拓展User模型使其得到其上级用户,今天要实现某些模型与用户多对多字段过滤功能。
功能描述:以用户指派功能为例,当前用户将文件指派给多个下级,修改前
程序会将所有用户都显示出来,修改后,程序只显示其下级用户:
上代码:
#多对多字段过滤
def formfield_for_dbfield(self,db_field,**kwargs):
if db_field.name=='assign_units':
kwargs["queryset"]=User.objects.filter(profile_user__pid=self.user.id)
return super(AssignAdmin,self).formfield_for_dbfield(db_field,**kwargs)
formfield_for_dbfield是xadmin内置的函数用来实现多对多过滤,
db_field.name=='assign_units'即在本模型中外键的名称
User.objects.filter(profile_user__pid=self.user.id)过滤条件
最后返回结果。
很少的一段代码,但是在过滤条件部分折腾了一个上午
由于实现该查询要用反向查询,刚开始使用该语句
kwargs["queryset"]=User.