AttributeError: type object 'AdminSignUpForm' has no attribute 'as_view' why is this not working?

AttributeError: type object 'AdminSignUpForm' has no attribute 'as_view' why is this not working?

Problem Description:

Creating a simple multiple users app. The as_view method is working with all the other views but not on this particular one. I have no clue why.

Here are my models

class User(AbstractUser):
    is_student = models.BooleanField(default=False)
    is_teacher = models.BooleanField(default=False)
    is_admin = models.BooleanField(default=False)

class Admin(models.Model):
    admin = models.OneToOneField(User, on_delete=models.CASCADE)
    bio = models.TextField()
    
    def __str__(self):
        return f'{self.user.username} Admin'
    
         
class Student(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE, primary_key=True)
    quizzes = models.ManyToManyField(Quiz, through='TakenQuiz')
    interests = models.ManyToManyField(Subject, related_name='interested_students')

    def get_unanswered_questions(self, quiz):
        answered_questions = self.quiz_answers 
            .filter(answer__question__quiz=quiz) 
            .values_list('answer__question__pk', flat=True)
        questions = quiz.questions.exclude(pk__in=answered_questions).order_by('text')
        return questions

    def __str__(self):
        return self.user.username

Here are my forms.py

class StudentSignUpView(CreateView):
    model = User
    form_class = StudentSignUpForm
    template_name = 'registration/signup_form.html'

    def get_context_data(self, **kwargs):
        kwargs['user_type'] = 'student'
        return super().get_context_data(**kwargs)

    def form_valid(self, form):
        user = form.save()
        login(self.request, user)
        return redirect('students:quiz_list')
class AdminSignUpView(CreateView):
    model = User
    form_class = AdminSignUpForm
    template_name = 'registration/signup_form.html'
    
    def get_context_data(self, **kwargs):
        kwargs['user_type'] = 'admin'
        return super().get_context_data(**kwargs)
    
    def form_valid(self, form):
        user = form.save()
        login(self.request, user)
        return redirect('home')
    

Here is the traceback

Traceback (most recent call last):
  File "C:Program FilesPython310libthreading.py", line 1009, in _bootstrap_inner
    self.run()
  File "C:Program FilesPython310libthreading.py", line 946, in run
    self._target(*self._args, **self._kwargs)
  File "C:Usersmikhaissue_envlibsite-packagesdjangoutilsautoreload.py", line 64, in wrapper
    fn(*args, **kwargs)
  File "C:Usersmikhaissue_envlibsite-packagesdjangocoremanagementcommandsrunserver.py", line 134, in inner_run
    self.check(display_num_errors=True)
  File "C:Usersmikhaissue_envlibsite-packagesdjangocoremanagementbase.py", line 487, in check
    all_issues = checks.run_checks(
  File "C:Usersmikhaissue_envlibsite-packagesdjangocorechecksregistry.py", line 88, in run_checks
    new_errors = check(app_configs=app_configs, databases=databases)
  File "C:Usersmikhaissue_envlibsite-packagesdjangocorechecksurls.py", line 14, in check_url_config
    return check_resolver(resolver)
  File "C:Usersmikhaissue_envlibsite-packagesdjangocorechecksurls.py", line 24, in check_resolver
    return check_method()
  File "C:Usersmikhaissue_envlibsite-packagesdjangourlsresolvers.py", line 480, in check
    for pattern in self.url_patterns:
  File "C:Usersmikhaissue_envlibsite-packagesdjangoutilsfunctional.py", line 49, in __get__
    res = instance.__dict__[self.name] = self.func(instance)
  File "C:Usersmikhaissue_envlibsite-packagesdjangourlsresolvers.py", line 696, in url_patterns
    patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module)
  File "C:Usersmikhaissue_envlibsite-packagesdjangoutilsfunctional.py", line 49, in __get__
    res = instance.__dict__[self.name] = self.func(instance)
  File "C:Usersmikhaissue_envlibsite-packagesdjangourlsresolvers.py", line 689, in urlconf_module
    return import_module(self.urlconf_name)
  File "C:Program FilesPython310libimportlib__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1050, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1027, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1006, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 688, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 883, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:Usersmikhadjango_schooldjango_schoolurls.py", line 11, in <module>
    path('accounts/signup/admin/',  admin.AdminSignUpForm.as_view(), name='admin_signup'),
AttributeError: type object 'AdminSignUpForm' has no attribute 'as_view'

Solution – 1

You should use the view, not its form so the AdminSignUpView, not AdminSignUpForm:

path(
    'accounts/signup/admin/', forms.AdminSignUpView.as_view(), name='admin_signup'
),
Rate this post
We use cookies in order to give you the best possible experience on our website. By continuing to use this site, you agree to our use of cookies.
Accept
Reject