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

这是我的代码。


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


红颜莎娜
浏览 111回答 1
1回答

达令说

从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})
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python