Django ValueError: не может запросить «инструктор»: должен быть «пользовательский» экземплярPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Django ValueError: не может запросить «инструктор»: должен быть «пользовательский» экземпляр

Сообщение Anonymous »

Я получаю следующую ошибку при попытке получить доступ к моей домашней странице: < /p>
ValueError at /
Cannot query "instructor": Must be "User" instance.
Request Method: GET
Request URL: http://127.0.0.1:8000/
Django Version: 5.2
Exception Type: ValueError
Exception Value: Cannot query "instructor": Must be "User" instance.
Exception Location: C:\Users\User LENOVO\OneDrive\Bureau\E-Learning\venv\Lib\site-
packages\django\db\models\sql\query.py, line 1346, in check_query_object_type
Raised during: base.views.Home
< /code>
В моем приложении курс имеет инструктор (иностранный для пользователя), а также имеет студентов (для пользователя Mantomomanyfield через регистрацию). При попытке получить доступ к домашней странице, на которой перечислены курсы, я получаю ошибку.
Вот остальная часть кода: < /p>
in views.py: < /p>
class Home(View):
def get(self, request):
try:
courses = Course.objects.select_related('instructor').all()
enrolled_courses = []
if request.user.is_authenticated and isinstance(request.user,
User):
enrolled_courses = Enrollment.objects.filter(
student=request.user
).values_list('course_id', flat=True)
# Pagination
paginator = Paginator(courses, 6) # Show 6 courses per page
page = request.GET.get('page')

try:
paginated_courses = paginator.page(page)
except PageNotAnInteger:
paginated_courses = paginator.page(1)
except EmptyPage:
paginated_courses = paginator.page(paginator.num_pages)

context = {
'courses': paginated_courses,
'enrolled_courses': enrolled_courses,
}

return render(request, 'homepage.html', context)

except Exception as e:
logger.error(f"Error in Home view: {str(e)}")
raise
< /code>
in models.py: < /p>
class User(AbstractUser):
instructor = models.BooleanField(default=False)
groups = models.ManyToManyField(
'auth.Group',
verbose_name='groups',
blank=True,
related_name='custom_user_groups',
help_text='The groups this user belongs to.',
)
user_permissions = models.ManyToManyField(
'auth.Permission',
verbose_name='user permissions',
blank=True,
related_name='custom_user_permissions',
help_text='Specific permissions for this user.',
)

def __str__(self):
return self.username

class Course(models.Model):
title = models.CharField(max_length=255)
description = models.TextField()
instructor = models.ForeignKey(User, on_delete=models.CASCADE,
related_name='courses')
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)

DIFFICULTY_CHOICES = (
('BEGINNER', 'Débutant'),
('INTERMEDIATE', 'Intermédiaire'),
('ADVANCED', 'Avancé'),
)

category = models.CharField(max_length=100, blank=True)
difficulty = models.CharField(max_length=12, choices=DIFFICULTY_CHOICES,
default='BEGINNER')
students = models.ManyToManyField(User, through='Enrollment',
related_name='enrolled_courses')

def __str__(self):
return self.title


Подробнее здесь: https://stackoverflow.com/questions/796 ... r-instance
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»