Доступ к значениям поля ManyToManyField в Django
В своем проекте я создал отношение Many to Many следующим образом:
class CustomUser(AbstractBaseUser, PermissionsMixin):
email = models.EmailField(_('Email Address'), unique=True)
user_name = models.CharField(_('User Name'), max_length=150, unique=True)
# and a lot of other fields and stuff
class Course(models.Model):
user = models.ManyToManyField(CustomUser, related_name="enrollments", blank=True, null=True)
course_name = models.CharField(_("Course Name"), max_length=200)
На сайте Django Admin я создал несколько курсов и добавил в них пользователей. Мне нужно получить список курсов, на которые записался уникальный пользователь и список пользователей, записавшихся на уникальный курс.
Я знаю, что могу получить доступ к диспетчеру Related Manager следующим образом:
user.enrollments
<django.db.models.fields.related_descriptors.create_forward_many_to_many_manager.<locals>.ManyRelatedManager object at 0x7f4df159c0a0>
И я также знаю, что я могу получить доступ к промежуточному классу m2m, используя:
user.enrollments.through
<class 'core.models.Course_user'>
Что я не смог получить (или найти в документации или вообще в интернете), так это как я могу получить доступ к значениям, содержащимся в этом отношении (курсы, на которые зачислен пользователь, и пользователи, зачисленные на курс).
Любая помощь будет оценена по достоинству.
user.enrollments
является менеджером, так же как Course.objects
является менеджером. Вы можете создать QuerySet
объектов с помощью метода .all()
[Django-doc]:
user.enrollments.all() # collection of Courses user is enrolled in
и мы можем запросить пользователей, зарегистрированных в объекте Course
course
:
course.user.all() # users enrolled in course