2016-11-14 98 views
0

我有一個新的應用程序,我正在開發的這個錯誤是我的着陸頁內的電子郵件公告。Django錯誤:沒有這樣的表「boletin_registrado」

我在models.py中創建了名爲「registrado」的模型(只有一張表),但是當我運行服務器時它說沒有名爲「registrado」的表,但是......它實際上是自從我寫入它之後models.py和不知道爲什麼我有這個錯誤

models.py的代碼是這樣

from __future__ import unicode_literals 
from django.db import models 

class registrado(models.Model): 

    nombre = models.CharField(max_length = 120, blank = True, null = True) 
    email = models.EmailField() 
    codigo_postal = models.IntegerField() 
    timestamp = models.DateTimeField(auto_now_add = True, auto_now = False) 
    actualizado = models.DateTimeField(auto_now_add = False, auto_now = True) 

    def __unicode__ (self): 

     return self.email 

然後我修改安裝的應用程序settings.py文件把應用程序的名稱在名單的結尾

INSTALLED_APPS = [ 
    'django.contrib.admin', 
    'django.contrib.auth', 
    'django.contrib.contenttypes', 
    'django.contrib.sessions', 
    'django.contrib.messages', 
    'django.contrib.staticfiles', 
    'boletin', 
] 

最後,登記admin.py應用

from django.contrib import admin 

# Register your models here. 
from .models import registrado 

class Adminregistrado(admin.ModelAdmin): 
    list_display = ["__unicode__", "nombre", "timestamp"] 
    class Meta: 
     model = registrado 

admin.site.register(registrado, Adminregistrado) 

很抱歉的長期職位,感謝你的幫助:/

+1

表名稱將與'app'名的前綴。所以對於你的情況,完整的表名將是'boletin_registrado'而不是'registrado',建議你使用'manage.py makemigration'和'manage.py migrate'來同步數據庫。 – Enix

回答

1

你可以檢查如下:

Go to Your project directory.

After creating models

  1. makemigrations
  2. migrate

當你已經完成了新的遷移文件,你必須將它們應用到你的數據庫,以確保它們按預期工作:

cd /var/opt/boletin 
python manage.py makemigrations 
python manage.py migrate 

#You can check table in database as follows: 
python manage.py dbshell 
\dt 

Here You will get all Tables that having actual Database name. Table Name generated using "application name and table name" in small case.

Application Name = "boletin" 
Table Name = "registrado" 

eg: Application Name + "_" + Table Name= "boletin_registrado」 

在你的應用程序,你可以使用如下:

cd /var/opt/boletin 
python manage.py shell 
from boletin.models import registrado or from boletin.models import * 

registrado_obj = registrado.(numbre = numbre, email=email, codigo_postal=codigo_postal, timestamp=timestamp, actualizado=actualizado) 
registrado_obj.save()