0

我有一个 UserModel 和一个 UserProfile 模型,我想使用 formtools 中的 FormWizard 来注册用户并使用用户的必要输入设置用户配置文件。

我在一些概念上苦苦挣扎,并试图将其修补在一起,但到目前为止没有成功。

我收到错误消息:

AttributeError at /accounts/register/
'MyRegistrationView' object has no attribute 'request'

表格.py

class UserForm(forms.ModelForm):
    password1 = forms.CharField(widget=forms.PasswordInput())
    password2 = forms.CharField(widget=forms.PasswordInput())


    class Meta:
        model = User
        fields = ('username', 'email', 'password1', 'password2', 'first_name', 'last_name')

class UserProfileForm(forms.ModelForm):
    course_accid = CourseModelChoiceField(Course.objects.all(), empty_label=None)

    class Meta:
        model = UserProfile
        fields = ('picture','reg_completed')

网址.py

urlpatterns = solid_i18n_patterns ('',
    url(r'^accounts/register/$', RegistrationWizard.as_view([UserForm, UserProfileForm]), name='registration_register'),
    url(r'^accounts/', include('registration.backends.simple.urls')),

视图.py

from formtools.wizard.views import SessionWizardView
from registration.signals import *
from django.core.files.storage import FileSystemStorage
from django.conf import settings

class MyRegistrationView(RegistrationView):
     def get_success_url(self, user):
         return '/index/'


TEMPLATES = {"0": "registration/registration_form_wiz.html",
             "1": "registration/registration_form_wiz.html",
            }

class RegistrationWizard(SessionWizardView):
    form_list = [UserForm, UserProfileForm]
    file_storage = FileSystemStorage(location=settings.MEDIA_ROOT + '/photos')

    def get_template_names(self):
        return [TEMPLATES[self.steps.current]]

    def done(self, form_list, **kwargs):

        userreg = MyRegistrationView()
        for form in form_list:
            if isinstance(form, UserForm):
                userreg.register(form)
            elif isinstance(form, UserProfileForm):
                userprofile = form.save(commit=False)
                user = self.request.user
                userprofile.user = user
                userprofile.save()

        return HttpResponseRedirect('/index/')

非常欢迎对错误或其他方法更好的任何帮助。

谢谢!

4

0 回答 0