为了账号安全,请及时绑定邮箱和手机立即绑定

Django:添加 ForeignKey limit_choices_以关联另一个或相同的

Django:添加 ForeignKey limit_choices_以关联另一个或相同的

红颜莎娜 2021-06-09 17:46:10
这是我的代码。std_name = models.ForeignKey(StudentInfo, on_delete=models.CASCADE)def get_std_class_name(self):   return int(self.std_name.std_subject_class.std_class_name_N)def limit_subject_std_choices():   return {'std_subject_class__std_class_name_N':'get_std_class_name' }subject_name = models.ForeignKey(StdSubject,on_delete=models.CASCADE, limit_choices_to=limit_subject_std_choices)但显示错误。ValueError at /admin/results/studentinfo/1/change/ 以 10 为基数的 int() 的无效文字:'get_std_class_name'我不知道我的代码有什么问题。我想当任何学生在任何科目上打分时,都会以她的班级名称为基础显示科目。我只是想从这个模型实例中获取学生班级信息并在这个函数中传递一个值。def limit_subject_std_choices():       return {'std_subject_class__std_class_name_N':'get_std_class_name'}
查看完整描述

1 回答

?
达令说

TA贡献1821条经验 获得超6个赞

Django doc of 中limit_choices_to,值应该是dict带有表达式 askey和值 asdict value

在您的情况下,您正在尝试为模型中的每个实例查找值,这是不可能的

那么在你的情况下有什么可能?

std_subject_class__std_class_name_N期待PK值,(一个整数值),所以你应该通过一个有效的整数

subject_name = models.ForeignKey(StdSubject, on_delete=models.CASCADE,
                                 limit_choices_to={'std_subject_class__std_class_name_N': 123})



查看完整回答
反对 回复 2021-06-22
  • 1 回答
  • 0 关注
  • 110 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信