如何在Django默认用户表中保存电子邮件和名称字段

时间:2011-04-03 07:25:13

标签: python django forms save

我想在django默认表中保存名为UserSignup的电子邮件和名称字段 我的models.py是:

from django.db import models
class UserSignup(models.Model):
    mailid      = models.CharField(max_length=100)
    name        = models.CharField(max_length=100)

我的views.py是:

from django import views
from django.shortcuts import render_to_response
from django.template import RequestContext
from Deals.signup.forms import signup
from django.contrib.auth.models import User
from django.http import HttpResponse

def usersignup(request,form_class=signup):

   form = form_class()
   print form
   if form.is_valid():  
       mail= UserSignup(mailid=request.POST['mailid'])
       mail.save()
       name= UserSignup(name=request.POST['name'])
       name.save()
  else:
       form = form_class()    
  return render_to_response('signup/registration_form.html',{'form':form})

和forms.py是

from django import forms
from django.contrib.auth.models import User
from Deals.signup.models import *
from django.utils.translation import ugettext_lazy as _

class signup(forms.Form):

    email = forms.EmailField(widget=forms.TextInput(),
                         label=_("Email address:"))

    username = forms.RegexField(regex=r'^\w+$',
                            max_length=30,
                            widget=forms.TextInput(),
                            label=_("Name:"))

def save(self,request,update):

    name =  self.cleaned_data['name']
    name.save()
    email =  self.cleaned_data['email']
    email.save()

请帮我保存数据库中的表单输入

2 个答案:

答案 0 :(得分:0)

正确检查Django文档http://docs.djangoproject.com/en/dev/topics/forms/

只需更改views.py中的代码即可。

def usersignup(request,form_class=signup):

    if request.method == 'POST': #If its a form submission, the method is POST
        form = form_class(request.POST)
        if form.is_valid():  
             newuser = form.save()
    else: #Else display the form 
        form = form_class()    

    return render_to_response('signup/registration_form.html',{'form':form})

表单文件中的“保存”功能不正确,不需要。

另外,您的“UserSignup”不是默认的用户表。这将是Django提供的用户模型。这已经包含了您在UserSignup中创建的字段。你为什么不使用Django的这个功能?

答案 1 :(得分:0)

最好一次性保存表单中的模型元素。

def save(self):
    new_user = User.objects.create_user(name = self.cleaned_data['name'],
                                        email = self.cleaned_data['email'])
return new_user