python - Django TypeError:int() 参数必须不是“设置”
问题描述
创建模型:
class Teacher(models.Model):
name = models.CharField(max_length=200)
def __str__(self):
return self.name
class Subject(models.Model):
subject = models.CharField(max_length=200)
teacher = models.ArrayReferenceField(to=Teacher)
def __str__(self):
return self.subject
尝试在 Django Admin 中添加主题时发生错误:
int() argument must be a string, a bytes-like object or a number, not 'set'
完整追溯:dpaste.com/3GWTC6P
解决方案
该错误试图说明的是您无法将集合转换为整数。我假设错误是由于teacher = models.ArrayReferenceField(to=Teacher)
你的这个字段引起的,它的返回类型是set()
. 您可以从集合中获取索引并将其转换为整数:
a = set({1,2,3,4})
int(a.pop())
如果您尝试将整个集合转换为整数,请先将它们合并,然后再转换为整数。
x = set({'1', '2', '3', ''4})
y = ''.join(x) # converting set into string
z = int(y)
如上所述,请确保您没有返回嵌套列表。
这是值被强制转换int()
并引发错误的地方:
File "C:\Program Files\Python36\lib\site-packages\django\db\models\fields\__init__.py" in get_prep_value
return int(value)
推荐阅读
- java - JAR 抛出 slf4j 丢失错误,即使它在其他 VM 上工作正常
- python - dyld:找不到符号:libSystem.B.dylib
- python - 为什么会出现这个错误?我是否正确解析它?这是一个关于应用程序的问题。谢谢
- php - foreach和优化中的php数据库查询
- excel - 将过滤器数据从 excel 转换为 google 表格的问题
- nativescript - Nativescript Vue:如何创建基本布局
- python-3.x - 绝对值函数不被识别为有纪律的凸程序 (CVXPY)
- python-3.x - 如何根据动画图中的发生时间对 3D 散点图进行颜色编码?
- html - 导航栏不显示切换按钮及其链接
- javascript - Discord.js 自动删除消息