2012-12-27 61 views
0

我一直試圖解決這個過去一小時,但我不知道我遺漏了什麼。這是第一次沒有以前數據的項目。然而,當我嘗試通過管理面板中添加數據我得到的錯誤如下:Django數據庫錯誤

DatabaseError at /admin/judge/event/ 

relation "judge_event" does not exist 
LINE 1: SELECT COUNT(*) FROM "judge_event" 
          ^

Request Method:  GET 
Request URL: http://127.0.0.1:8012/admin/judge/event/ 
Django Version:  1.4.3 
Exception Type:  DatabaseError 
Exception Value:  

relation "judge_event" does not exist 
LINE 1: SELECT COUNT(*) FROM "judge_event" 

我的模型以供參考:

class Event(models.Model): 
    competition_start = models.DateTimeField() 
    competitors = models.ManyToManyField('Picture') 
    results = models.CommaSeparatedIntegerField(max_length=20) 

class Picture(models.Model): 
    uploader = models.ForeignKey(UserProfile) 
    upload_date = models.DateTimeField() 
    image = models.ImageField(upload_to="media") 
    score = models.DecimalField(max_digits=10,decimal_places=10) 
    score_RD = models.DecimalField(max_digits=10,decimal_places=10) 
    rated = models.BooleanField() 
    last_competed = models.DateTimeField() 
    competition = models.OneToOneField(Event) 

我三重檢查我的所有筆記,並沒有注意到我做了不同的事情。

「judge_event」應該是「judge_Event」嗎?

+0

嘗試'judge_Event' – yukaizhao

+0

自第一次運行'syncdb'以來,您是否更改了模型? –

+0

嗯...不是我注意到的,但是如果這是'judge_Event'的問題;如何更改我的數據庫以反映此更改而不使用SQL? – user1431282

回答

2

您對破壞性(如添加外鍵)的模型進行了更改。 syncdb不會對模式進行任何破壞性更改。

因此,您需要刪除表,然後執行syncdb,以便正確應用新的模式。

有支持這種變化的應用程序稱爲遷移。其中最受歡迎的是south。一旦你更熟悉django,你就可以開始使用它了。

+0

我嘗試使用South,但每當嘗試遷移數據庫時它都會凍結,我試圖通過運行./manage.py重新啓動myapp但那也行不通。在我說'是'允許重置之後,它會凍結。 – user1431282

+0

如果您剛剛起步,請不要讓南面的事情複雜化。只需刪除文件(如果您使用的是sqlite),然後運行syncdb。 –