/ admin / app1 / book / no中的DatabaseError没有这样的列:app1_book.related_id

时间:2014-01-08 01:21:06

标签: python django django-models

我为管理员写了一个Django程序。但事实证明,ForeignKey有些不对劲,我无法找到。

这是我的admin.py和views.py:

from django.contrib import admin
from app1.models import *

class BookAdmin(admin.ModelAdmin):
    list_display = ('name','auther','pages')
    search_fields = ['name']

admin.site.register(Book,BookAdmin)
admin.site.register(RelatedBook)

views.py:

from django.db import models
CATEGORY_CHOICES = (
    ('s','Science'),
    ('l','Literature'),
    ('e','else'),

)

class Book(models.Model):
    name = models.CharField(max_length = 100)
    auther = models.CharField(max_length= 100)
    pages = models.IntegerField()
    related = models.ForeignKey('RelatedBook')

    def __unicode__(self):
            return self.name

class RelatedBook(models.Model):
    name = models.CharField(max_length = 100)
    category = models.CharField(max_length = 1, choices = CATEGORY_CHOICES)
    description = models.CharField(max_length = 1000)
    def __unicode__(self):
            return self.name

1 个答案:

答案 0 :(得分:0)

如果您在首次创建Book模型后添加了相关列,则syncdb将不会创建它,因为它不会处理迁移。

如果您有重要数据,则需要手动添加列。如何执行此操作取决于您使用的数据库。

如果您没有任何数据需要保留,那么删除Book表并重新运行syncb可能是最简单的。

架构迁移将成为即将发布的Django 1.7版本的一部分。对于Django 1.6及更早版本,您可能希望将来探索迁移工具south