【问题标题】:Atrribute Error in Django web applicationDjango Web 应用程序中的属性错误
【发布时间】:2021-02-01 03:39:47
【问题描述】:

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

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

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

【问题讨论】:

    标签: python django django-models django-views django-templates


    【解决方案1】:

    您的 Quiz 对象与 Staffs 而不是 CustomUser 相关,因此您应该通过它访问它

     self.request.user.staffs.quizess
    

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

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

    【讨论】:

    • 非常感谢先生,它工作得非常完美。我真的很开心
    猜你喜欢
    • 2022-06-18
    • 1970-01-01
    • 2010-10-04
    • 2012-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-14
    相关资源
    最近更新 更多