Сначала остановите сервер, затем внесите изменения и выполните команды python manage.py makemigrations
и python manage.py migrate
. Возможно, это сработает, но вы играете с зарезервированным ключевым словом в Python.
Если это не работает, сейчас просто удалите 0001_initial.py
, который находится на пути trydjango/src/products/migrations/
. Если у вас уже есть данные в вашей базе данных, сделайте резервную копию где-нибудь. int
является одной из встроенных функций в Python. Пожалуйста, не используйте такое соглашение об именах в Python. Посмотрите на приведенный ниже пример, вы получите представление об этом.
str_val = '1'
print(str_val) # 1
print(type(str_val)) # <class 'str'>
int_val = int(str_val)
print(int_val) # 1
print(type(int_val)) # <class 'int'>
Это просто простой пример преобразования строкового значения в целочисленное с использованием int()
. Давайте присвоим некоторое значение int()
.
# by default
print(int) # <class 'int'>
print(type(int)) # <class 'type'>
# let's get the previous example again
str_val = '1'
print(str_val) # 1
print(type(str_val)) # <class 'str'>
# assign some value to int(). (please please please never do such a thing like this)
int = 'assigned string'
print(int) # 'assigned string'
print(type(int)) # <class 'str'>
int_val = int(str_val)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'str' object is not callable
Вы получите такую же ошибку при выполнении кода выше. Так что int()
больше не будет преобразовывать строку в целые числа. Потому что ты нарушил правило. Теперь это как обычная переменная. Тем не менее, если вы действительно хотите добавить переменную типа int
, просто используйте _int
или int_
, а если вы хотите отобразить имя столбца как int
, просто добавьте имя db_column
.
_int = models.IntegerField(default=10, db_column='int')
# or
int_ = models.IntegerField(default=10, db_column='int')
Прежде чем вносить эти изменения, остановите сервер. Затем отредактируйте, после этого запустите python manage.py makemigrations
и python manage.py migrate
. Надеюсь, этот ответ вам как-то поможет.
ОБНОВЛЕНИЕ:
Этот ответ поможет вам найти все зарезервированные ключевые слова в Python и не использовать ни одно из них в качестве имен переменных.