2015-10-01 3 views
1

При создании элемента я получил эту ошибку, хотя я могу видеть category_id в sqlall:таблица items_item не имеет столбец с именем category_id

table items_item has no column named category_id 

миграции команды:

$ python manage.py makemigrations items 
No changes detected 

$ python manage.py migrate 
Running migrations: 
    No migrations to apply. 

model.py

from django.db import models 

class Category(models.Model): 
    name = models.CharField(max_length=200) 

# Create your models here. 
class Item(models.Model): 
    name = models.CharField(max_length=200) 
    description = models.TextField(null=True, blank=True) 
    image = models.ImageField(upload_to="item_images") 
    category = models.ForeignKey(Category) 

    show_in_front_page= models.BooleanField(default=True) 
    always_show_in_front_page= models.BooleanField(default=True) 
    is_trending=models.BooleanField(default=True) 

sqlall

# $ python manage.py sqlall items 
BEGIN; 
CREATE TABLE "items_category" (
    "id" integer NOT NULL PRIMARY KEY AUTOINCREMENT, 
    "name" varchar(200) NOT NULL 
) 
; 
CREATE TABLE "items_item" (
    "id" integer NOT NULL PRIMARY KEY AUTOINCREMENT, 
    "name" varchar(200) NOT NULL, 
    "description" text, 
    "image" varchar(100) NOT NULL, 
    "category_id" integer NOT NULL REFERENCES "items_category" ("id"), 
    "show_in_front_page" bool NOT NULL, 
    "always_show_in_front_page" bool NOT NULL, 
    "is_trending" bool NOT NULL 
) 
; 
CREATE INDEX "items_item_6f33f001" ON "items_item" ("category_id"); 

COMMIT; 

admin.py

from django.contrib import admin 

# Register your models here. 
from .models import Item, Category 


admin.site.register(Item) 
admin.site.register(Category) 
+1

Вы добавили поле «категории», так как Вы создали модель и не сделал [миграции] (https://docs.djangoproject.com/en/1.8/topics/migrations/)? – Oli

+0

Команда миграции возвращает нет. Не применяются миграции. – sadaf2605

+0

Как насчет «makemigrations»? – Oli

ответ

2

Если category_id колонна уже в прикладной миграции файл, но не была создана в базе данных., То проще исправить было бы добавить столбец вручную , Легко выработать SQL из вашего вывода sqlall выше.

./manage.py dbshell # open a db shell 

# Add the column 
ALTER TABLE items_item ADD COLUMN "category_id" integer NOT NULL REFERENCES "items_category" ("id"); 
# Add the index 
CREATE INDEX "items_item_6f33f001" ON "items_item" ("category_id"); 
Смежные вопросы