2015-06-26 20 views
0

我是django的新手,並且有點問題。我爲小型項目創建了一個簡單的視圖,模板和模型。當我在'投票'應用程序中要求輸入模型時,我得到Vote_Type不存在的錯誤。我不明白爲什麼它會查找Vote_Type而不是鍵入數據庫。django中不存在App_Model

所以我去尋找一個問題,現在我試圖從python控制檯創建模型類型的數據庫對象我得到了同樣的錯誤。

這是我的模型:

from django.db import models 
from django.utils import timezone 

# Create your models here. 
class Voted_Object(models.Model): 
    Voted_Object_name = models.CharField(max_length=50) 
    Voted_Object_image = models.ImageField 
    Voted_Object_rating = models.IntegerField(default=0) 
    Voted_Object_Id = models.IntegerField 

class Type(models.Model): 
    pub_date = models.DateTimeField('date published') 
    Type_name = models.CharField(max_length=50) 
    Type_Id = models.IntegerField 

,這是我得到的錯誤,當我嘗試在Python控制檯執行Type.objects.all()。

關係 「Vote_type」 不存在 LINE 1: 「 」 「 」...... te_type PUB_DATE「,」 Vote_type TYPE_NAME「 FROM」 Vote_type ..

什麼是錯的我碼?爲什麼Django的尋找Vote_Type代替

+1

你運行過'makemigrations'和'migrate'嗎? – Wtower

+0

我確定我有,但讓我檢查一遍。 – Vato

回答

2

類型缺省情況下Django的創建與命名方案「{app_name}_{class_name}」表 - 所以它希望找到一個在對應於Type模式在Vote數據庫稱爲「Vote_type」表應用程序。您是否創建並運行遷移來添加表格,或者手動執行此操作?

無關的,但我可以建議你組織你的應用程序是這樣的:

from django.db import models 
from django.utils import timezone 

# Create your models here. 
class Vote(models.Model): 
    name = models.CharField(max_length=50) 
    image = models.ImageField() 
    rating = models.IntegerField(default=0) 

class VoteType(models.Model): 
    pub_date = models.DateTimeField('date published') 
    name = models.CharField(max_length=50) 
  • 你不需要id領域 - 他們自動添加
  • 加前綴的字段名稱只是使事情變得冗長。 vote.namevote.Voted_Object_name更容易編寫/理解。 _Object後綴相同。
  • type是一個關鍵字,所以也許用VoteType代替。
+0

Thx建議!我確信我已經運行遷移,但讓我再次做,只是爲了確保。 – Vato

+0

是的,它的工作。對不起,我確信我做了遷移。我認爲我忘了做遷移。 – Vato