请稍等 ...
×

采纳答案成功!

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

能否在后台添加课程的老师时,依据已输入的机构进行输入限制

问题:我们在后台添加courses数据的时候输入了老师和机构,如果所输入的信息实际是不相符的怎么办。例如bobby老师是清华的,结果我在添加课程数据时愣是选择机构北大,老师bobby。保存时因为没检查这两者关联性自然不会报错。这是否是个在xadmin中需要完善的问题?能否在后台用户选择了机构后,在选老师的时候只显示这个机构的老师,具体怎么做?

解决思路:比较小白,只想到怎么实现了两个并不完美的方法,最后个方法还等高手支招

                一,个是干脆不让他选机构,只选老师,需要用到机构的时候再反向查询,但这样就得重写teacher的__str__方法,显示成"机构-老师名"的形式,避免2个同名老师不同机构的出现。

                二,是在数据库保存时利用clean_teacher方法做验证,但这种抛出异常的方法,感觉体验很不好。

                三,则是我觉得比较理想的选择机构后,老师字段会自动做筛选,只显示该机构老师,但我始终没想不出来咋整。



附第二种方法,不知对不:

def clean_teacher(self):
                teacher_org = self.teacher.org
       if teacher_org != self.course_org:
                raise ValidationError("教师所属机构与选择机构不一致")
       else:
                return self.teacher


正在回答 回答被采纳积分+3

1回答

bobby 2018-05-21 13:53:35

这目前比较麻烦 你需要熟悉xadmin的源码才行

0 回复 有任何疑惑可以回复我~
  • 老师后续能否能加一下这一块的内容,感觉这种方式会用到的比较多
    回复 有任何疑惑可以回复我~ 2018-08-01 11:08:33
  • 这样的话,如果添加课程的讲师和机构没有对应,那么这个课程算是属于哪一个机构的呢?
    回复 有任何疑惑可以回复我~ 2018-08-01 11:10:49
  • 你可以在xadmin的save方法检查机构和讲师是否匹配, 你说的这个功能是关联选择的问题 目前django的admin有一个插件 https://github.com/digi604/django-smart-selects 你可以看看这个,但是xadmin目前还不支持,你可以到官网上提一个issue
    回复 有任何疑惑可以回复我~ 2018-08-03 10:09:34
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信