这是我的代码。
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)
但是显示错误。 / admin / results / studentinfo / 1 / change /处以int()为基数为10的int()无效文字出现ValueError:'get_std_class_name'
我不知道我的代码有什么问题。我想让任何学生在她的学科上打上分数,同时根据班级名称显示学科。 我只想从此模型实例获取学生班级信息,并在此函数内传递一个值。
def limit_subject_std_choices():
return {'std_subject_class__std_class_name_N':'get_std_class_name'}
答案 0 :(得分:1)
在Django doc of limit_choices_to
中,该值应为 dict
,其表达式为key
,而值则为dict 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})