簡體   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