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 пытается удалить колонку, которая не существует в базе данных.

Чтобы решить эту проблему, вы можете попробовать выполнить следующие действия:

  1. Убедитесь, что у вас последняя версия кода и что все миграции были применены к базе данных.

  2. Если столбец не существует в базе данных, вы можете попробовать удалить файл миграции, который добавляет столбец, а затем снова выполнить команды makemigrations и migrate.

  3. Если столбец существует в базе данных, но он вам больше не нужен, вы можете удалить поле из вашей модели, а затем выполнить команды makemigrations и migrate для удаления столбца из базы данных.

Важно отметить, что удаление столбца из базы данных может привести к потере данных, поэтому следует быть осторожным при выполнении этого действия и убедиться, что у вас есть резервная копия данных, прежде чем приступать к работе.

Вернуться на верх