Как исправить унаследованную модель?

У меня есть унаследованная модель данных:

class Unit (models.Model):
    Name = models.CharField(max_length=50, unique=True, default="DEFAULT VALUE")
    description = models.TextField(null=True)
    address1 = models.CharField(max_length=255, default="DEFAULT VALUE")
    address2 = models.CharField(max_length=255, default="DEFAULT VALUE")
    City = models.CharField(max_length=100, default="DEFAULT VALUE")
    State = models.CharField(max_length=2, default="DEFAULT VALUE")
    zip = models.IntegerField(default=0)
    lat = models.DecimalField(decimal_places=9, max_digits=38, null=True)
    lng = models.DecimalField(decimal_places=9, max_digits=38, null=True)

    def __str__(self):
        return self.Name

    class Meta:
        abstract = True


class Geo (Unit):
    coverage = models.TextField(null=True)

    def __str__(self):
        return self.Name

class Ship (Unit):
    HullNumber = models.TextField(null=True)
    ShipClass = models.ForeignKey(ShipClass)
    Origin = models.CharField(max_length=3, choices=ALLEGIENCE_CHOICES, default='FED')
    Geo = models.ForeignKey(Geo)

Проблема в том, что если я выполню:

>>> models.Geo._meta.get_all_field_names()
['City', 'Name', 'State', 'address1', 'address2', 'coverage', 'crew', 'description', 'id', 'lat', 'lng', 'ship', 'zip']

но если я выполню:

>>> models.Geo.objects.all()

Я получил:

django.db.utils.OperationalError: нет такого столбца: fleet_geo.id

я что-то пропустил? Я был RTFM в течение последних двух дней. Я не знаю, что мне не хватает. У кого-нибудь есть свет, который они могут пролить на это?

Спасибо

1 ответ

Решение

Ваши базы данных не настроены или не соответствуют вашей модели.

Если вы используете django 1.7+, вы должны запустить миграцию, чтобы таблицы базы данных были созданы / изменены для вашей модели: Активация моделей

python manage.py makemigrations
python manage.py migrate
Другие вопросы по тегам