无法将模型形式保存到 Django 中的数据库
cannot save modelform to database in django
嗨,我是 Django 的新手,制作了一个生物数据表单,但问题是当我尝试将表单保存到数据库时,它给出了错误 - (1146, "Table 'django_db.tictactoe_biodata' doesn't exist")
感谢任何帮助..:)
我的views.py
from django.shortcuts import render
from model import BiodataForm, Biodata
def get_name(request):
if request.method == 'POST':
post = request.POST
form = BiodataForm(request.POST)
if form.is_valid():
biodata = form.save()
firstname = post['first_name']
lastname = post['last_name']
return render(request, 'now.html', {'firstname': firstname, 'lastname': lastname})
else:
form = BiodataForm()
return render(request, 'name.html', {'form': form})
我的settings.py
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'django_db',
'PASSWORD': 'password',
'USER': 'djangouser',
'HOST': '',
'PORT': ''
}
}
和错误-
>ProgrammingError at /getname/
>(1146, "Table 'django_db.tictactoe_biodata' doesn't exist")
>Request Method: POST
>Request URL: http://10.8.21.17:3369/getname/
>Django Version: 1.6.1
>Exception Type: ProgrammingError
>Exception Value:
>(1146, "Table 'django_db.tictactoe_biodata' doesn't exist")
>Exception Location: /usr/lib/python2.7/dist-packages/MySQLdb/connections.py in >defaulterrorhandler, line 36
>Python Executable: /usr/bin/python
>Python Version: 2.7.6
>Python Path:
>['/home/aquaman/tictactoe',
> '/usr/lib/python2.7',
>'/usr/lib/python2.7/plat-x86_64-linux-gnu',
> '/usr/lib/python2.7/lib-tk',
> '/usr/lib/python2.7/lib-old',
> '/usr/lib/python2.7/lib-dynload',
> '/usr/local/lib/python2.7/dist-packages',
> '/usr/lib/python2.7/dist-packages',
> '/usr/lib/python2.7/dist-packages/PILcompat',
>'/usr/lib/python2.7/dist-packages/gtk-2.0',
>'/usr/lib/python2.7/dist-packages/ubuntu-sso-client']
>Server time: Wed, 7 Jan 2015 10:25:26 +0000
我正在使用我的大学提供的代理网络
我不知道问题是 ip 地址还是其他问题
提前致谢
错误信息似乎很清楚:您在 django 中定义了一个模型,但忘记在您的数据库中创建模型的 table。在 django < 1.7 中,内置管理命令 syncdb
(https://docs.djangoproject.com/en/1.6/ref/django-admin/#syncdb) will create the table if it doesn't exist, but you'll have to manually take care of schema changes (if you add / remove / modify fields from an existing model), so I strongly advise you either use South (https://south.readthedocs.org/en/latest/) 用于处理模式和数据迁移,或者只是升级到内置支持模式和数据迁移的 django 1.7。
附带说明:成功 post 后的良好做法是重定向 (http://en.wikipedia.org/wiki/Post/Redirect/Get)。
您必须创建迁移并 运行 它们。我看到您使用的是 Django 1.6.1,所以您必须按照以下步骤操作:
打开你的 settings.py 并检查你的 INSTALLED_APPS 上是否有 'south'(如果没有,请按照此 guide)
打开终端
转到项目的根目录(那里有一个名为 manage.py 的文件)
运行 以下命令:
python manage.py syncdb
python manage.py schemamigration nameofyourapp --initial
python manage.py migrate nameofyourapp
python manage.py schemamigration nameofyourapp --auto
嗨,我是 Django 的新手,制作了一个生物数据表单,但问题是当我尝试将表单保存到数据库时,它给出了错误 - (1146, "Table 'django_db.tictactoe_biodata' doesn't exist")
感谢任何帮助..:)
我的views.py
from django.shortcuts import render
from model import BiodataForm, Biodata
def get_name(request):
if request.method == 'POST':
post = request.POST
form = BiodataForm(request.POST)
if form.is_valid():
biodata = form.save()
firstname = post['first_name']
lastname = post['last_name']
return render(request, 'now.html', {'firstname': firstname, 'lastname': lastname})
else:
form = BiodataForm()
return render(request, 'name.html', {'form': form})
我的settings.py
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'django_db',
'PASSWORD': 'password',
'USER': 'djangouser',
'HOST': '',
'PORT': ''
}
}
和错误-
>ProgrammingError at /getname/
>(1146, "Table 'django_db.tictactoe_biodata' doesn't exist")
>Request Method: POST
>Request URL: http://10.8.21.17:3369/getname/
>Django Version: 1.6.1
>Exception Type: ProgrammingError
>Exception Value:
>(1146, "Table 'django_db.tictactoe_biodata' doesn't exist")
>Exception Location: /usr/lib/python2.7/dist-packages/MySQLdb/connections.py in >defaulterrorhandler, line 36
>Python Executable: /usr/bin/python
>Python Version: 2.7.6
>Python Path:
>['/home/aquaman/tictactoe',
> '/usr/lib/python2.7',
>'/usr/lib/python2.7/plat-x86_64-linux-gnu',
> '/usr/lib/python2.7/lib-tk',
> '/usr/lib/python2.7/lib-old',
> '/usr/lib/python2.7/lib-dynload',
> '/usr/local/lib/python2.7/dist-packages',
> '/usr/lib/python2.7/dist-packages',
> '/usr/lib/python2.7/dist-packages/PILcompat',
>'/usr/lib/python2.7/dist-packages/gtk-2.0',
>'/usr/lib/python2.7/dist-packages/ubuntu-sso-client']
>Server time: Wed, 7 Jan 2015 10:25:26 +0000
我正在使用我的大学提供的代理网络 我不知道问题是 ip 地址还是其他问题
提前致谢
错误信息似乎很清楚:您在 django 中定义了一个模型,但忘记在您的数据库中创建模型的 table。在 django < 1.7 中,内置管理命令 syncdb
(https://docs.djangoproject.com/en/1.6/ref/django-admin/#syncdb) will create the table if it doesn't exist, but you'll have to manually take care of schema changes (if you add / remove / modify fields from an existing model), so I strongly advise you either use South (https://south.readthedocs.org/en/latest/) 用于处理模式和数据迁移,或者只是升级到内置支持模式和数据迁移的 django 1.7。
附带说明:成功 post 后的良好做法是重定向 (http://en.wikipedia.org/wiki/Post/Redirect/Get)。
您必须创建迁移并 运行 它们。我看到您使用的是 Django 1.6.1,所以您必须按照以下步骤操作:
打开你的 settings.py 并检查你的 INSTALLED_APPS 上是否有 'south'(如果没有,请按照此 guide)
打开终端
转到项目的根目录(那里有一个名为 manage.py 的文件)
运行 以下命令:
python manage.py syncdb
python manage.py schemamigration nameofyourapp --initial
python manage.py migrate nameofyourapp
python manage.py schemamigration nameofyourapp --auto