Django:django.db.utils.OperationalError: нет такого столбца
Проблема в том, что я делаю приложение электронной коммерции с использованием Django и модели продуктов. Сначала я добавил поля title,description и price, запустил все команды makemigrations, migrate и все работало нормально. Теперь я добавил к нему поле с именем Image, а затем при применении makemigrations выдает ошибку django.db.utils.OperationalError: нет такого столбца: Products_product.image
Для этого я применил все предложенные решения, включая удаление базы данных и ее повторное воссоздание, а также удаление истории миграций из папки миграций, но они все равно не работали, поэтому мне пришлось снова создавать новый проект.
Теперь в новом проекте эта миграция полей изображений работала нормально при моих первоначальных миграциях, и теперь я добавил поле с именем featured(BOOLEAN FIELD), чтобы пометить несколько продуктов как отмеченные, и теперь снова возникает проблема, та же проблема, которая была с этим полем изображения.
django.db.utils.OperationalError: нет такого столбца: Products_product.featured
Я потратил много времени на копание интернета из-за этой проблемы, но никто из них не работает? Пожалуйста, помогите?
Так выглядит моя модель
class Product(models.Model):
title = models.CharField(max_length = 100)
description = models.TextField()
price =models.DecimalField(decimal_places=2,max_digits=20,default=39.99)
image = models.ImageField(upload_to=upload_image_path,null=True,blank=True)
featured = models.BooleanField(default=False)
Ниже показана полная ошибка:
File "C:\Users\vipul\AppData\Local\Programs\Python\Python36-32\lib\site-packages\django-2.0.4-py3.6.egg\django\db\models\query.py", line 248, in __repr__
data = list(self[:REPR_OUTPUT_SIZE + 1])
File "C:\Users\vipul\AppData\Local\Programs\Python\Python36-32\lib\site-packages\django-2.0.4-py3.6.egg\django\db\models\query.py", line 272, in __iter__
self._fetch_all()
File "C:\Users\vipul\AppData\Local\Programs\Python\Python36-32\lib\site-packages\django-2.0.4-py3.6.egg\django\db\models\query.py", line 1179, in _fetch_all
self._result_cache = list(self._iterable_class(self))
File "C:\Users\vipul\AppData\Local\Programs\Python\Python36-32\lib\site-packages\django-2.0.4-py3.6.egg\django\db\models\query.py", line 53, in __iter__
results = compiler.execute_sql(chunked_fetch=self.chunked_fetch, chunk_size=self.chunk_size)
File "C:\Users\vipul\AppData\Local\Programs\Python\Python36-32\lib\site-packages\django-2.0.4-py3.6.egg\django\db\models\sql\compiler.py", line 1067, in execute_sql
cursor.execute(sql, params)
File "C:\Users\vipul\AppData\Local\Programs\Python\Python36-32\lib\site-packages\django-2.0.4-py3.6.egg\django\db\backends\utils.py", line 100, in execute
return super().execute(sql, params)
File "C:\Users\vipul\AppData\Local\Programs\Python\Python36-32\lib\site-packages\django-2.0.4-py3.6.egg\django\db\backends\utils.py", line 68, in execute
return self._execute_with_wrappers(sql, params, many=False, executor=self._execute)
File "C:\Users\vipul\AppData\Local\Programs\Python\Python36-32\lib\site-packages\django-2.0.4-py3.6.egg\django\db\backends\utils.py", line 77, in _execute_with_wrappers
return executor(sql, params, many, context)
File "C:\Users\vipul\AppData\Local\Programs\Python\Python36-32\lib\site-packages\django-2.0.4-py3.6.egg\django\db\backends\utils.py", line 85, in _execute
return self.cursor.execute(sql, params)
File "C:\Users\vipul\AppData\Local\Programs\Python\Python36-32\lib\site-packages\django-2.0.4-py3.6.egg\django\db\utils.py", line 89, in __exit__
raise dj_exc_value.with_traceback(traceback) from exc_value
File "C:\Users\vipul\AppData\Local\Programs\Python\Python36-32\lib\site-packages\django-2.0.4-py3.6.egg\django\db\backends\utils.py", line 85, in _execute
return self.cursor.execute(sql, params)
File "C:\Users\vipul\AppData\Local\Programs\Python\Python36-32\lib\site-packages\django-2.0.4-py3.6.egg\django\db\backends\sqlite3\base.py", line 303, in execute
return Database.Cursor.execute(self, query, params)
django.db.utils.OperationalError: no such column: Products_product.featured'
1 ответ
Я бы посоветовал вам использовать virtualenv
- установить virtualenv
virtualenv -p python3 envname
источник envname/bin/activ
Затем установите здесь все пакеты, которые вам нужны для вашего проекта.
- теперь вы можете легко использовать миграцию
Попробуйте добавить строку возврата self
def __str__(self):
return self.featured