python - 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)
但显示错误。/admin/results/studentinfo/1/change/ int() 以 10 为基数的无效文字:'get_std_class_name'
我不知道我的代码有什么问题。我想当任何学生在任何科目上打分时,都会根据她的班级名称显示科目。只是我想从这个模型实例中获取学生班级信息并在这个函数中传递一个值。
def limit_subject_std_choices():
return {'std_subject_class__std_class_name_N':'get_std_class_name'}
解决方案
从Django 文档中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})
推荐阅读
- mysql - mysql如何在同一列中乘以某些值,但如果满足条件则不乘以其他值
- vba - 按下发送按钮后如何弹出问题,是否标记?
- python - pythonic和uFunc-y方式将pandas列变成“增加”索引?
- node.js - nodeJS中的变量值意外更改
- android - 动态更改 TextView 的样式和文本
- database - RESTful API:根据 URL/端点连接到特定数据库
- c# - 如何将数组从 Angular 6 传递到 ASP.NET Core API 以获取 GET 方法?
- css - 水平文本旁边的垂直文本反应原生?
- reactjs - 在 Promise 之外未定义 Redux 操作
- reactjs - 如何在 React Native 中创建单个视图节点