Django просит удалить колонку, которая даже не существует
Я пробовал применять миграции, но django просит меня удалить несуществующий столбец. Пожалуйста, помогите
Ошибка, которую я получаю - OperationalError at /admin/location/location/ (1054, "Unknown column 'location_location.id' in 'field list'")
models.py
class Location(models.Model):
city = models.CharField(max_length=255)
state = models.CharField(max_length=255)
country = models.CharField(max_length=255)
parent = models.ForeignKey('self', on_delete=models.CASCADE, null=True, blank=True)
views.py
def add_location(request):
if request.method == 'POST':
form = LocationForm(request.POST)
if form.is_valid():
form.save()
return redirect('/')
else:
form = LocationForm()
return render(request, 'add_location.html', {'form': form})
admin.py
from django.contrib import admin
from .models import Location
# Register your models here.
admin.site.register(Location)
Я пробовал использовать migrations --fake, но это сделало все еще хуже. Пожалуйста, помогите мне. это срочно :(
Traceback Traceback (last recent call last):
Просто попробуйте следующее:
сначала удалите файл миграции, относящийся к этой Location
модели, и выполните миграцию вручную, используя следующие команды:
python manage.py makemigrations appname
python manage.py sqlmigrate appname 0001 # this value will generate after makemigration. It can be either 0001 or 0002 and so on.
python manage.py migrate
Возможно, вы пытаетесь удалить колонку, которая ранее была добавлена в вашу модель, но миграция для добавления колонки в базу данных не была завершена или была откатана. В этом случае Django пытается удалить колонку, которая не существует в базе данных.
Чтобы решить эту проблему, вы можете попробовать выполнить следующие действия:
Убедитесь, что у вас последняя версия кода и что все миграции были применены к базе данных.
Если столбец не существует в базе данных, вы можете попробовать удалить файл миграции, который добавляет столбец, а затем снова выполнить команды
makemigrations
иmigrate
.Если столбец существует в базе данных, но он вам больше не нужен, вы можете удалить поле из вашей модели, а затем выполнить команды
makemigrations
иmigrate
для удаления столбца из базы данных.
Важно отметить, что удаление столбца из базы данных может привести к потере данных, поэтому следует быть осторожным при выполнении этого действия и убедиться, что у вас есть резервная копия данных, прежде чем приступать к работе.