С模型:
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中添加到Subject时发生错误:
int() argument must be a string, a bytes-like object or a number, not 'set'
完整追溯:dpaste.com/3GWTC6P
答案 0 :(得分:0)
该错误试图告诉您的是,您无法将集合转换为整数。我假设错误是由于您的此字段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)
如上所述,请确保您没有返回嵌套列表。
这是将 value 强制转换为int()
并引发错误的地方:
File "C:\Program Files\Python36\lib\site-packages\django\db\models\fields\__init__.py" in get_prep_value
return int(value)