Django:添加ForeignKey limit_choices_关联另一个或相同的Model实例

时间:2018-09-20 23:45:55

标签: python django django-models django-forms django-views

这是我的代码。

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'}

1 个答案:

答案 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})