Django TypeError: аргумент int () должен быть не 'установленным' - PullRequest
0 голосов
/ 03 ноября 2018

Созданных моделей:

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

1 Ответ

0 голосов
/ 03 ноября 2018

Ошибка пытается сказать, что вы не можете преобразовать набор в целое число. Я предполагаю, что ошибка связана с вашим полем 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...