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

来源:8-5 课程章节信息2

慕移动2036456

2018-05-18

问题:我们在后台添加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


写回答

1回答

bobby

2018-05-21

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

0
3
bobby
回复
weibo_奥特斯东_0
你可以在xadmin的save方法检查机构和讲师是否匹配, 你说的这个功能是关联选择的问题 目前django的admin有一个插件 https://github.com/digi604/django-smart-selects 你可以看看这个,但是xadmin目前还不支持,你可以到官网上提一个issue
2018-08-03
共3条回复

Python3.6+django+xadmin,打造在线教育平台

【毕设】Python 2.7到3.6 完美适配,Django升级2.0

3677 学习 · 4038 问题

查看课程