Django TypeError:int()参数必须不是'set'

时间:2018-11-03 14:32:35

标签: python django mongodb django-models

С模型:

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

1 个答案:

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