2010-11-01 55 views
0

我有一个团队注册应用程序。用户注册成为团队的一员。当他们这样做时,视图添加一个团队成员并将用户添加到auth数据库中。同时创建用户注册和Django用户。保存方法是添加用户,无论有效的形式

但是,当团队模型返回无效数据时,user.save()方法添加用户名,密码和电子邮件。

因此,当用户更正团队注册并点击提交时,他们现在被告知用户名已被提取。

我想要发生的是用户名等被添加后,团队成员已验证。

有什么建议吗?

这里的观点:

def register(request, **kwargs): 
    if request.method == 'POST': 
     form = SimpleRegForm(request.POST) 
     if form.is_valid(): 
      username = form.cleaned_data['username'] 
      email = form.cleaned_data['email'] 
      password = form.cleaned_data['password1'] 
      user = User.objects.create_user(username, email, password) 
      user.save() 
      form.save() 

      # Send an email to the admin letting them know that a person registered 
      subject = render_to_string('teamregistration/email_subject.txt') 
      message = render_to_string('teamregistration/email_body.txt', 
             {'first_name':form.cleaned_data['first_name'], 'last_name':form.cleaned_data['last_name'], 'tbi_region':form.cleaned_data['tbi_region']}) 
      recipients = ['[email protected]', '[email protected]'] 
      send_mail(subject, message, settings.DEFAULT_FROM_EMAIL, recipients) 

      return HttpResponseRedirect('/tbi-team-register/registration-submitted/') 
    else: 
     form = SimpleRegForm() 

    return render_to_response('teamregistration/form.html', {'form':form}, context_instance=RequestContext(request)) 
+1

我没有看到在这个例子中完成了团队成员处理,只处理了用户注册表单(并且出现了两次)。这在我看来是一个简单的优先问题:确保两者的数据都是正确的,然后保存两者。如果你不能这样做,你可能需要考虑Django的“Commit On Success”装饰器,如果任何一个事务失败,这将导致给定视图内的所有事务自动回滚。 – 2010-11-01 16:22:36

+0

这是一个更优雅的答案。但是......我是。我所要做的就是删除user.save()。这解决了问题,限制了保存到form.save() – 2010-11-03 04:50:17

回答

0

所有你需要做的是去除user.save()。