我不明白为什么我的数据库没有使用新模型进行更新

时间:2016-03-10 08:26:08

标签: python mysql django

python / django新手。我有一个模型,“评论”,我创建。我有一个视图,我想创建一个新的评论模型。当我这样做时(单击提交按钮((实际上是“创建”按钮))),我得到:

ProgrammingError at /reviews/ (1146, "Table 'my_app.my_app_comment' doesn't     
exist")

models.py

class Comments(models.Model):
     comment_text = models.CharField(max_length=600, default="None")
     recipe = models.ForeignKey('cookbook.BaseRecipe', related_name='val1')

views.py

class CommentCreate(CreateView):
    model = Comments
    fields = ['comment_text']
    template_name = 'commentcreate.html'
    success_url = 'commentcreate.html'

urls.py

urlpatterns = [
url(r'^$', CommentCreate.as_view(), name='comment')
]

commentcreate.html文件的一部分

<form action="" method="post">{% csrf_token %}
{{ form.as_p }}
<input type="submit" value="Create" />
</form>

我认为这个表(它说的那个表缺失了)将由django自动创建。

4 个答案:

答案 0 :(得分:0)

您需要为新模型应用迁移。在项目的文件夹中,运行

manage.py makemigrations [application_name]
manage.py migrate [application_name]

此处[application_name]是可选的(您可以将其替换为实际修改的Django应用程序的名称,或省略它。)

如果您使用的是Python3,则可能需要运行python3 manage.py ...而非manage.py ...

答案 1 :(得分:0)

可能是因为您尚未将应用my_app添加到settings.py。像这样更新你的settings.py

INSTALLED_APPS = (
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'my_app',
)

答案 2 :(得分:0)

我的应用程序中没有带有 init .py文件的迁移文件夹。一旦我创造了这两件事,现在一切似乎都有效。谢谢你的回复。

答案 3 :(得分:0)

您可能需要专门致电您的应用:

  1. 在settings.py
  2. 中加入应用名称
  3. 运行python manage.py makemigrations yourappname
  4. python manage.py migrate --no-initial-data YOURAPPNAME
  5. 检查数据库中的迁移表,看看您是否已经为该应用程序进行了一些迁移。
  6. 如果没有任何效果,或者您遇到迁移问题,可以删除表中的所有条目,删除迁移文件夹并再次运行(1)。