Мне сложно понять, почему мой QuerySet не повторяется
Я пытаюсь использовать данные пользователей при форматировании формы. Я возвращаю QuerySet с курсами, которые пользователь еще не прошел, а затем передаю его в качестве вариантов для метода multiplechoicefield. Когда я пытаюсь это сделать, я получаю сообщение об ошибке: «TypeError: не удается распаковать не повторяемый объект Courses» Вот мой код:
forms.py
from django import forms
from .models import UserProfile, Courses
class CourseForm(forms.Form):
def __init__(self, *args, **kwargs):
self.user=kwargs.pop('user', None)
super(CourseForm, self).__init__(*args, **kwargs)
student_profile = UserProfile.objects.filter(user_id=self.user)
crs_taken = Courses.objects.filter(userprofiles=student_profile[0])
crs_not_taken = Courses.objects.exclude(title=crs_taken[0])
self.fields['crs_not_taken'] = forms.MultipleChoiceField(choices=crs_not_taken)
models.py
from django.db import models
from django.contrib.auth import get_user_model
# Create your models here.
class Courses(models.Model):
subject = models.CharField(max_length=50)
title = models.CharField(max_length=50)
professor = models.CharField(max_length=50)
section = models.PositiveSmallIntegerField()
crn = models.PositiveSmallIntegerField()
userprofiles = models.ManyToManyField('UserProfile', through='Attends')
def __str__(self):
return self.title
class UserProfile(models.Model):
usermodel = get_user_model()
user = models.OneToOneField(usermodel, on_delete=models.CASCADE)
course = models.ManyToManyField('Courses', through='Attends')
def __str__(self):
return "%s's profile" % self.user
#Juction table
class Attends(models.Model):
userprofile = models.ForeignKey(UserProfile, on_delete=models.CASCADE)
courses = models.ForeignKey(Courses, on_delete=models.CASCADE)
views.py
from django.shortcuts import render, redirect
from django.contrib.auth.forms import UserCreationForm
from django.contrib.auth.decorators import login_required
from .models import UserProfile, Courses
from django.http import HttpResponseRedirect
from .forms import CourseForm
from django import forms
# Create your views here.
def indexView(request):
return render(request, 'index.html')
@login_required
def dashboard_view(request):
#Retrieves the users profile
user_id = request.user.id
student_profile = UserProfile.objects.filter(user_id=user_id)
form = CourseForm(user=request.user)
#queryset with all of the users courses
query_set = student_profile[0].course.all()
return render(request, 'dashboard.html', {'query_set':query_set, 'form':form})
Любые советы приветствуются. Спасибо.