2014-01-08 71 views
0

我爲管理員編寫了一個Django程序。但事實證明,ForeignKey有些問題,我找不到。DatabaseError在/ admin/app1/book/no這樣的列:app1_book.related_id

這是我的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 

回答

0

如果添加相關的列中,您首先創建Book模型後,再執行syncdb會不創建它,因爲它不處理遷移。

如果您有重要數據,那麼您需要手動添加列。你如何做這取決於你正在使用哪個數據庫。

如果您沒有任何數據需要保留,那麼刪除Book表並重新運行syncb可能是最簡單的。

模式遷移將成爲即將發佈的Django 1.7版本的一部分。對於Django 1.6及更早版本,您可能需要在將來探索遷移工具south

相關問題