我正在使用Django + Python 3.7在Google App Engine中开发一个测试应用程序;我成功启动了测试应用程序,并在本地和应用程序引擎服务器上创建了一个新应用程序。 现在,我正在尝试创建更复杂的模型。 我创建了模型+视图+ url文件和模板,并进行了迁移(显然很成功),但是如果我尝试在本地服务器上可视化模板,则会检索到此错误:
位于/的ProgrammingError (1146,“表'djangoseo.keywords_keywords'不存在”)
我试图再次迁移模型,但使用syncdb命令失败。
这是模型
from django.db import models
class Keywords(models.Model):
keyword_name = models.CharField(max_length=200)
keyword_tags = models.ManyToManyField('Tags')
keyword_urls = models.ManyToManyField('Urls', through='Rankings')
avg_volume = models.IntegerField(default=0)
jan_volume = models.IntegerField(default=0)
feb_volume = models.IntegerField(default=0)
mar_volume = models.IntegerField(default=0)
apr_volume = models.IntegerField(default=0)
may_volume = models.IntegerField(default=0)
jun_volume = models.IntegerField(default=0)
jul_volume = models.IntegerField(default=0)
aug_volume = models.IntegerField(default=0)
sep_volume = models.IntegerField(default=0)
oct_volume = models.IntegerField(default=0)
nov_volume = models.IntegerField(default=0)
dec_volume = models.IntegerField(default=0)
intent = models.CharField(max_length=200)
micromoment = models.CharField(max_length=200)
language = models.CharField(max_length=200)
addedby = models.CharField(max_length=200)
def __str__(self):
return self.keyword_name
class Tags(models.Model):
tag_name = models.CharField(max_length=200)
addedby = models.CharField(max_length=200)
def __str__(self):
return self.tag_name
class Urls(models.Model):
url_name = models.CharField(max_length=300)
domain = models.CharField(max_length=200)
def __str__(self):
return self.url_name
class Rankings(models.Model):
keyword = models.ForeignKey(Keywords, on_delete=models.CASCADE)
url = models.ForeignKey(Urls, on_delete=models.CASCADE)
date_ranking = models.DateTimeField()
ranking = models.IntegerField(default=0)
def __str__(self):
return self.ranking'''
这是视图
from django.views import generic
from .models import Keywords
class IndexView(generic.ListView):
template_name = 'keywords/index.html'
context_object_name = 'keywords_list'
def get_queryset(self):
"""Return the first ten keywords."""
return Keywords.objects.order_by('keyword_name')[:10]
这是index.html的模板
{% if keywords_list %}
<ul>
{% for keyword in keywords_list %}
<li>{{ keyword.keyword_name }}</li>
{% endfor %}
</ul>
{% else %}
<p>No keywords are available.</p>
{% endif %}
我检索到此错误:
ProgrammingError at /
(1146, "Table 'djangoseo.keywords_keywords' doesn't exist")
Request Method: GET
Request URL: http://localhost:8000/
我该如何解决?我为什么得到它?
答案 0 :(得分:0)
如果您尚未完成initial migration,则可能是问题所在。请先遵循链接的初始迁移文档,以确保已完成此操作。
如果您已完成初始迁移,则需要检查以确保运行时
python manage.py makemigrations
您在模块的yourmodule/migrations/
目录中收到了migration file。如果该文件不存在,则需要仔细检查makemigrations
的语法,并确保您正在从manage.py文件所在的目录中运行命令。
如果有迁移文件,则需要运行migrate:
python manage.py migrate
以将其应用于数据库。为了确保它适用,请检查数据库中是否有名为djangomigrations
的表,然后运行select * from djangomigrations order by id desc;
。如果您在表中看到文件名,那应该很好。