django.db.utils.OperationalError: no such column: main_anzeigen.rasse - ничего не помогает

Никак не получается добавить дополнительные поля в models.py. Всё перепробовал: удалял файлы миграции, делал python manage.py makemigrations, python manage.py migrate, пробовал удалять базу данных и всё по кругу и в разном порядке — ничего не помогает.

Вот код models.py:

from django.db import models
import csv


RASSEN = (
            ('araber', 'Araber'),
            ('ha', 'Hispano-Araber'),
            ('cruzado', 'Cruzado'),
            ('lustiano', 'Lustiano'),
            ('pre', 'PRE'),
            ('muli', 'Muli'),
            ('esel', 'Esel'),
)

class Anzeigen(models.Model):

    name = models.CharField('Name', max_length=255)
    preis = models.CharField('Preis', max_length=255)
    telefon = models.CharField('Telefon', max_length=255)
    beschreibung = models.TextField('Beschreibung')
    anzeigenummer = models.CharField('Anzeigenummer', max_length=255)
    standort = models.CharField('Standort', max_length=500)
    online = models.CharField('Online seit', max_length=255)
    url = models.CharField('URL', max_length=1000)
    bild = models.CharField('Bild', max_length=1000)
    rasse = models.CharField('Rasse', max_length=255, choices=RASSEN, default='PRE')

    def __str__(self):
        return self.name

    def get_absolute_url(self):
        return f'/{self.id}'

    class Meta:
        verbose_name = 'Anzeige'
        verbose_name_plural = 'Anzeigen'

with open('main/daten.csv', encoding='utf-8') as File:
    reader = csv.reader(File, delimiter=';')
    for row in reader:
        _, created = Anzeigen.objects.get_or_create(
        name = row[0],
        preis = row[1],
        telefon = row[2],
        beschreibung = row[3],
        anzeigenummer = row[4],
        standort = row[5],
        online = row[6],
        url = row[7],
        bild = row[8]
        )

Пожалуйста, подскажите, что я делаю не так и как исправить ситуацию. Спасибо!


Ответы (1 шт):

Автор решения: Za Ars

А не надо было удалять миграции. если у вас нет репозитория со старыми миграциями - либо удалять базу (если локально, и данные не важны), либо пробовать поочередно запускать (если миграции остались)

python manage.py migrate <app> <migration_number> --fake
python manage.py makemigrations 
python manage.py migrate

Если миграций нет и нужно на боевом проекте сделать, то делаете дамб бд, И откатываете структуру данных под старое состояние БД, и запускаете ./manage.py makemigrations

Других вариантов предложить не могу


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

Если без всех миграций, на чистой бд ничего не помогает - то значит что то делаете не так

→ Ссылка