请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

xadmin model筛选字段的choices

class OrderListAdmin(object):
	list_display = ('id','subuser',‘orderuser’,'appname','serverelease','odertype','uplinests','orderappname')
	
	
 def formfield_for_dbfield(self,db_field, **kwargs,):

        if db_field.name == "uplinests":
            kwargs['choices'] = (
                ('remove', '已废弃'),
                ('Pending', '待审批'),
            )
            if self.request.user.username == '工单的审批人':

                kwargs['choices'] += (('approval', '已审批'),)

        return super().formfield_for_dbfield(db_field, **kwargs)

这里要获取当前数据的工单审批人,就是orderuser的值.一直找不到方法。

正在回答

2回答

bobby 2019-01-12 16:11:31

https://img1.sycdn.imooc.com//szimg/5c39a0fb00019c9005960271.jpg 这是我这里写的一个逻辑,这个是在xadmin保存的逻辑的拦击,这里只要不调用obj.save()就不会保存,所以你只需要在save前修改你的逻辑然后再调用save方法就行了

0 回复 有任何疑惑可以回复我~
提问者 慕粉2023095444 2019-01-07 17:01:40

根据当前的登录用户,来显示model字段的choices选项,就是想实现 self.request.user.is_superuser 之类的判断,不过标准不是是不是超级用户,而是是不是该工单的审批人。

0 回复 有任何疑惑可以回复我~
  • bobby #1
    orderuser是属于当前的model的列吧, 你这里覆盖的方法中并没有当前model的实例,你可以重写save_models方法中可以获取到obj
    回复 有任何疑惑可以回复我~ 2019-01-08 14:40:43
  • 提问者 慕粉2023095444 回复 bobby #2
    这个应该是在save之前显示的,要根据登录用户是不是审批人来动态改写工单状态的choices的列表。这个怎么实现呢?
    回复 有任何疑惑可以回复我~ 2019-01-09 18:49:49
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信