Django - ProgrammingError - колонка не существует
Обычно я нахожу решение этой проблемы. Я даже пробовал ядерный вариант полного сброса базы данных с помощью python manage.py flush
, но безуспешно. (Я также пробовал удалить папку migrations, но опять безрезультатно)
точное сообщение об ошибке следующее:
колонка main_reviewrating.venue_id не существует
Возможно, я впервые обращаю на это внимание, но место проведения**_id** кажется странным.
Я уверен, что обычное сообщение будет иметь вид
main_reviewrating.venue (без _id
)
Когда я запускаю python manage.py showmigrations <your_app_name>
, он показывает
[X] 0001_initial
Я также должен добавить, что я запускаю это на своем локальном компьютере, поэтому нет проблем, специфичных для развертывания.
Вот код (models.py)
class Venue(models.Model):
name = models.CharField(verbose_name="Name",max_length=100, null=True, blank=True)
def __str__(self):
return str(self.name) if self.name else ''
class Product(models.Model):
name = models.CharField('Product Name', max_length=120, null=True)
class Meta:
db_table='Product'
def __str__(self):
return str(self.name)
class ReviewRating(models.Model):
user = models.ForeignKey(User,blank=True, on_delete=models.CASCADE, related_name="usercomments")
product=models.ForeignKey(Product,related_name="comments", on_delete=models.CASCADE)
review =models.TextField(max_length=250)
rating =models.IntegerField(choices=RATING, default=0)
venue = models.ForeignKey(Venue, blank=True, null=True, related_name="venues", on_delete=models.CASCADE)
def __str__(self):
return '%s - %s'%(self.user, self.product)
Есть идеи, что я делаю неправильно?
Edit: если подумать, возможно, я неправильно использую ForeignKey. Я пытаюсь связать конкретный отзыв о конкретном продукте с конкретным местом.
Это означает, что один и тот же продукт может быть рассмотрен одним и тем же пользователем на разных площадках.
Удалите все файлы в папке migration, кроме файла init.py в папке app и запустите makemigrations.
1.Удалите вашу базу данных как something.sqlite3
(для резервного копирования вы можете переименовать ее).
2.Удалите все файлы миграции, кроме __init__.py
.
3.Запустите команду migrations снова.
Надеемся, что у вас не возникнет никаких проблем.