2011-11-10 32 views
0

这是我的用户注册视图:处理Django UserProfile表单时出错。

def user_reg(request): 
    UserReg = modelformset_factory(UserProfile) 

    if request.method == 'POST': 
     formset = UserReg(request.POST) 
     if formset.is_valid(): 
      formset.save() 
      return HttpResponseRedirect('/thanks/') 
    else: 
     formset = UserReg() 
    return render_to_response("regform.html",{"formset":formset,}) 

这是我的models.py

from django.db import models 
from django.contrib.auth.models import User 


class UserProfile(models.Model): 
    user = models.ForeignKey(User, unique=True) 
    name = models.CharField(max_length = 100) 
    reg_no = models.TextField(unique=True) 
    password = models.CharField(max_length=128) 

我得到的错误是:

Exception Type: DatabaseError at /register/ 
Exception Value: column auth_userprofile.name does not exist 
LINE 1: ..._userprofile"."id", "auth_userprofile"."user_id", "auth_user... 

我在这里已经两个问题: 1.显然,我想知道为什么我会收到错误以及如何进行调试。 2.这是正确的方式去做或应该在forms.py中定义它,然后导入它?模型formset我的意思。 django文档显示,这种方式可以完成。

回答

0

错误是数据库错误,您需要将“name”列添加到表“auth_userprofile”中。我强烈建议查看“南”以满足您的所有数据库模式迁移需求。

+0

因此,不应该Syncdb工作? – Hick

+0

是的,没有.Syncdb不区分表格,它只能从头开始创建它们,所以如果你愿意丢失所有的数据(或导出,同步,导入),但是一旦你活着,我想要一些更强大的东西。 – Aquarion