【发布时间】:2022-06-12 14:14:44
【问题描述】:
我正在编写一个逻辑,允许我显示老师从数据库中创建的所有测验,现在我想通过仅根据学生注册的课程向学生显示测验来使这一点更加精确,我我正在尝试编写此过滤器,但它没有按预期工作。
models.py
class Course(models.Model):
course_creator = models.ForeignKey(User, on_delete=models.CASCADE, related_name="quiz_user")
course_title = models.CharField(max_length=255)
slug = models.SlugField(unique=True)
def __str__(self):
return self.title
class UserCourse(models.Model):
user = models.ForeignKey(User , null = False , on_delete=models.CASCADE)
course = models.ForeignKey(Course , null = False , on_delete=models.CASCADE, related_name="usercourse")
payment_status = models.CharField(max_length=100, choices=PAYMENT_STATUS, default="pending")
date = models.DateTimeField(auto_now_add=True)
class Quiz(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE, related_name="quiz_user")
title = models.CharField(max_length=255)
course = models.ForeignKey(Course, on_delete=models.SET_NULL, null=True)
date = models.DateTimeField(auto_now_add=True)
slug = models.SlugField(unique=True)
def __str__(self):
return self.title
views.py
def StudentQuizList(request):
user_course = UserCourse.objects.filter(user=request.user)
quizzes = Quiz.objects.filter()
context = {
# 'user_course': user_course,
'quizzes': quizzes,
}
return render(request, 'student_dashboard/quiz.html', context)
错误
The QuerySet value for an exact lookup must be limited to one result using slicing.
测验.html
{% for quiz in quizzes %}
<img src="{{quiz.course.course_thumbnail.url}}" class="rounded-2" alt="Card image" style="width: 200px; height: 100px; object-fit: cover;">
<h3 class="card-title"><a href'#'>{{quiz.course.course_title|title|truncatechars:30}}</a></h3>
<span class="mb-0">{{quiz.title}}</span>
<span class="small d-block mt-1">({{quiz.questions_count}} Question{{quiz.questions_count|pluralize:"s"}})</span>
<a href="{% url 'student_dashboard:take_quiz' quiz.course.slug quiz.slug %}" class="btn btn-warning-soft">Start Exam</a>
{% endfor %}
urls.py
urlpatterns = [
path('', views.dashboard, name="student_dashboard"),
path('quiz/', StudentQuizList, name="student-quiz"),
path('quiz/<slug:course_slug>/<slug:quiz_slug>/', take_quiz, name='take_quiz'),
path('quiz/<slug:course_slug>/<slug:quiz_slug>/studentresults/', QuizResultsView, name='student_quiz_results'),
path('taken/', TakenQuizListView.as_view(), name='taken_quiz_list'),
]
【问题讨论】:
-
你能分享完整的回溯
-
你能更清楚地解释一下你到底想要什么样的查询集吗?
-
@SunderamDubey 我只想显示与用户课程中的课程相关的测验,也就是说,我不想向学生显示所有测验,而只想显示相关的测验到他们注册的课程,它存储在模型
UserCourse -
@DestinyFranks 你的意思是你想要一个查询集来显示与单个登录用户选择的单个课程相关的所有测验?
-
@SunderamDubey 是的,这几乎是我想要的,我想要所有的查询集,它显示与用户注册的课程相关的所有测验,存储在
UserCourse模型中。跨度>
标签: python django django-models django-views