首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OneToOneField - OperationalError

OneToOneField - OperationalError
EN

Stack Overflow用户
提问于 2012-03-04 22:16:20
回答 1查看 622关注 0票数 0

我正在使用与用户连接的OneToOneField来完成表单提交任务。但我要去找OperationalError。这是一个我用来在登录后提供表单的应用程序。登录过程使用另一个应用程序成功完成。

Models.py:

代码语言:javascript
复制
from django.db import models
from django.forms import ModelForm
from sorl.thumbnail import ImageField
from django.contrib.auth.models import User

class BasicModel(models.Model):
    user = models.OneToOneField(User, unique=True, related_name='profile')
    name = models.CharField(max_length=200)
    dob = models.DateField()
    photo = ImageField(upload_to='sample')

class BasicModelForm(ModelForm):
    class Meta:
            model = BasicModel
            exclude = ('user',)

Views.py:

代码语言:javascript
复制
@login_required
def BasicView(request):
    if request.method == 'POST':
            form = BasicModelForm(request.POST, request.FILES, instance=request.user.profile)
            if form.is_valid():
                    data = form.save()
                    im = get_thumbnail(data.photo, '100x100', crop='center', quality=99)
                    return preview(request, data.id, im)
    else:
            form = BasicModelForm()
    return render_to_response("unnamed.html", {'form': form}, context_instance=RequestContext(request))

def preview(request, id, im):
    obj = get_object_or_404(BasicModel, pk=id)
    return render_to_response("preview.html", {'obj': obj, 'im': im})

错误:

代码语言:javascript
复制
Exception Type: OperationalError
Exception Value:    (1054, "Unknown column 'unnamed_basicmodel.user_id' in 'field list'")
Exception Location: /usr/lib/pymodules/python2.7/MySQLdb/connections.py in defaulterrorhandler, line 36
Traceback: form = BasicModelForm(request.POST, request.FILES, instance=request.user.profile) 
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-03-04 22:24:03

看起来您已经将用户字段添加到模型中,但没有将列添加到数据库中。

syncdb命令将为您创建新表,但它不会添加或修改已存在的表中的列。您有几个选项:

如果您仍在开发应用程序,并且还没有任何重要数据,那么最简单的做法就是删除表,然后再次运行syncdb来重新创建它。

如果不能删除该表,则需要手动运行SQL命令来添加该列。

您可能还想研究south,这是一个用于Django的模式迁移工具。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9555573

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档