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))
我没有看到在这个例子中完成了团队成员处理,只处理了用户注册表单(并且出现了两次)。这在我看来是一个简单的优先问题:确保两者的数据都是正确的,然后保存两者。如果你不能这样做,你可能需要考虑Django的“Commit On Success”装饰器,如果任何一个事务失败,这将导致给定视图内的所有事务自动回滚。 – 2010-11-01 16:22:36
这是一个更优雅的答案。但是......我是。我所要做的就是删除user.save()。这解决了问题,限制了保存到form.save() – 2010-11-03 04:50:17