2016-11-14 99 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()