繁体   English   中英

Django Web 应用程序中的属性错误

[英]Atrribute Error in Django web application

我已经尝试了几天没有解决方案。我收到了这个奇怪的错误,之后我进行了几次尝试,所有这些都没有解决我的问题,我很高兴收到解决方案。

ERROR LOGS

Traceback (most recent call last):
  File "C:\Users\Habib\Documents\django\django-new\student-management-system\venv\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
    response = get_response(request)
  File "C:\Users\Habib\Documents\django\django-new\student-management-system\venv\lib\site-packages\django\core\handlers\base.py", line 115, in _get_response
    response = self.process_exception_by_middleware(e, request)
  File "C:\Users\Habib\Documents\django\django-new\student-management-system\venv\lib\site-packages\django\core\handlers\base.py", line 113, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "C:\Users\Habib\Documents\django\django-new\student-management-system\venv\lib\site-packages\django\views\generic\base.py", line 71, in view
    return self.dispatch(request, *args, **kwargs)
  File "C:\Users\Habib\Documents\django\django-new\student-management-system\venv\lib\site-packages\django\views\generic\base.py", line 97, in dispatch
    return handler(request, *args, **kwargs)
  File "C:\Users\Habib\Documents\django\django-new\student-management-system\venv\lib\site-packages\django\views\generic\list.py", line 142, in get
    self.object_list = self.get_queryset()
  File "C:\Users\Habib\Documents\django\django-new\student-management-system\student_management_app\StaffViews.py", line 364, in get_queryset
    queryset = self.request.user.quizzes \
  File "C:\Users\Habib\Documents\django\django-new\student-management-system\venv\lib\site-packages\django\utils\functional.py", line 225, in inner
    return func(self._wrapped, *args)

Exception Type: AttributeError at /staff_quiz_home/
Exception Value: 'CustomUser' object has no attribute 'quizzes'
MODELS.PY

class CustomUser(AbstractUser):
    user_type_data = ((1, "HOD"), (2, "Staff"), (3, "Student"))
    user_type = models.CharField(default=1, choices=user_type_data, max_length=10)

class Quiz(models.Model):
    owner = models.ForeignKey(Staffs, on_delete=models.CASCADE, related_name='quizzes')
    name = models.CharField(max_length=255)
    subject = models.ForeignKey(Subjects, on_delete=models.CASCADE, related_name='quizzes')

class student(models.Model):
    name = models.CharField(max_length=255)
    admin = models.OneToOneField(CustomUser, on_delete = models.CASCADE)
    gender = models.CharField(max_length=50)
    quizzes = models.ManyToManyField(Quiz, through='TakenQuiz')

class Staffs(models.Model):
    name = models.CharField(max_length=255)
    admin = models.OneToOneField(CustomUser, on_delete = models.CASCADE)
    address = models.TextField()

class Subjects(models.Model):
    name = models.CharField(max_length=255)
    staff_id = models.ForeignKey(CustomUser, on_delete=models.CASCADE)
VIEWS.PY

class QuizListView(ListView):
    model = Quiz
    ordering = ('name', )
    context_object_name = 'quizzes'
    template_name = "staff_template/quiz_home_page.html"

    def get_queryset(self):
        queryset = self.request.user.quizzes \
            .select_related('subject') \
            .annotate(questions_count=Count('questions', distinct=True)) \
            .annotate(taken_count=Count('taken_quizzes', distinct=True))
        return queryset

提前致谢,如果您需要更多信息,请告诉我。

您的测验对象与 Staffs 而不是 CustomUser 相关,因此您应该通过

 self.request.user.staffs.quizess

除此之外,很明显你不能对集合进行查询,所以你应该在一行中做一些事情

 Quiz.object.filter(owner__admin=request.user).
 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM