gpt4 book ai didi

python - 迁移后Django表不存在

转载 作者:太空宇宙 更新时间:2023-11-03 20:48:34 25 4
gpt4 key购买 nike

我正在使用 Django + Python 3.7 在 Google App Engine 中开发一个测试应用程序;我成功启动了测试应用程序,并在本地端和应用程序引擎服务器上创建了一个新应用程序。现在我正在尝试创建一个更复杂的模型。我创建了模型 + View + url 文件和模板并迁移了它(显然成功了),但是如果我尝试在本地服务器上可视化模板,则会检索到此错误:

编程错误/(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'''

这是 View

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: <a href="http://localhost:8000/" rel="noreferrer noopener nofollow">http://localhost:8000/</a>

我该如何解决这个问题?为什么我会得到它?

最佳答案

如果您还没有做过initial migration然而,这可能就是问题所在。首先按照链接的初始迁移文档进行操作,以确保该操作已完成。

如果您已完成初始迁移,则需要检查以确保运行时

python manage.py makemigrations

您收到了migration file在模块的 yourmodule/migrations/ 目录中。如果该文件不存在,您需要仔细检查 makemigrations 的语法,并确保您正在从 manage.py 文件所在的同一目录运行该命令。

如果您有迁移文件,则需要运行migrate :

python manage.py migrate

将其应用到数据库。为了确保它已应用,请检查数据库中是否有名为 djangomigrations 的表,并运行 select * from djangomigrations order by id desc;。如果您在表中看到您的文件名,则应该可以开始了。

关于python - 迁移后Django表不存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56408396/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com