Я получил форму Django, которая появляется правильно в моем браузере, но после заполнения поля и нажать отправить, я получаю эту ошибку: table main_manifest has no column named manifest_name
Джанго Форма Error: таблица main_manifest не имеет столбца с именем manifest_name
Я м с помощью Python 2.7.5 & Django 1.7.1, так что я бежал:
python manage.py syncdb
python manage.py makemigrations
python manage.py migrate
и я попытался удалить мои миграции и базы данных и восстановили свои таблицы. Почему я получаю эту ошибку?
Models.py
from django.db import models
class Manifest(models.Model):
manifest_name = models.CharField(max_length=300)
keywords = models.CharField(max_length=300)
product_name = models.CharField(max_length=300)
timestamp = models.DateTimeField(auto_now_add=True)
Forms.py
from django.forms import ModelForm
from .models import Manifest
class ManifestForm(ModelForm):
class Meta:
model = Manifest
fields = "__all__"
---- Редактировать ----- Основываясь на комментарий Пауло Я думаю, что, возможно, мой файловая структура испорчена и почему мои команды миграции не работают. Может ли кто-нибудь проверить, что это выглядит правильно?
MY_PROJECT_FOLDER
--__init__.py
--settings.py
--urls.py
--wsgi.py
MAIN_APP_FOLDER
--MIGRATIONS_FOLDER
--TEMPLATES_FOLDER
----__init__.py
----admin.py
----forms.py
----models.py
----views.py
----MAIN_APP_FOLDER
------allfiles.html
------morefiles.html
STATIC_FOLDER
TEMPLATES_FOLDER
db.sqlite3
manage.py
---- Редактировать ----- Это, вероятно, стоит отметить, что после запуска python manage.py sql main
в терминале я, кажется, вижу совершенно ясно, что таблица main_manifest на самом деле есть столбец с именем manifest_name:
CREATE TABLE "main_manifest" (
"id" integer NOT NULL PRIMARY KEY AUTOINCREMENT,
"manifest_name" varchar(300) NOT NULL,
"keywords" varchar(300) NOT NULL,
"product_name" varchar(300) NOT NULL,
"timestamp" datetime NOT NULL
)
;
Эта ошибка часто указывает, что определение модели не синхронизировано с фактической таблицей базы данных. Если это так, вы должны запустить соответствующую команду «ALTER TABLE ...» или удалить таблицу и запустить «manage.py syncdb» (или «manage.py schemamigration ...», если вы используете юг). –
Я понимаю, что миграции теперь являются частью Django 1.7.1 (http://south.aeracode.org/) и что Юг больше не нужен, и я могу вместо этого просто использовать: python manage.py syncdb python manage .py makemigrations python manage.py migrate После запуска вышеуказанных команд все еще необходимо запустить команду «alter table»? –
Извините, Майкл, я не заметил, что вы используете 1.7. Нет, теоретически это должно быть достаточно, но django жалуется, что в таблице отсутствует столбец «manifest_name», поэтому, возможно, вы не выполняете схематизацию в правильном приложении или какую-то другую проблему. –