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