在 Django 中访问 ManyToManyField 的值

Accessing the values of a ManyToManyField in Django

我在我的项目中创建了这样的多对多关系:

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 管理站点中,我创建了一些课程并向其中添加了用户。我需要的是获取唯一用户注册的课程列表注册唯一课程的用户列表。

我知道我可以像这样访问相关管理器:

user.enrollments

<django.db.models.fields.related_descriptors.create_forward_many_to_many_manager.<locals>.ManyRelatedManager object at 0x7f4df159c0a0>

而且我还知道我可以使用以下方法访问中间 m2m class:

user.enrollments.through

<class 'core.models.Course_user'>

我无法获得(或在文档中甚至根本无法在互联网上找到)的是如何访问此关系中包含的 values(用户注册的课程)和注册课程的用户)。

任何帮助将不胜感激。

user.enrollments 经理 ,就像 Course.objects 是经理一样。您可以使用 .all() method [Django-doc]:

创建对象的 QuerySet
<i>user</i>.enrollments<strong>.all()</strong>  # collection of Courses <i>user</i> is enrolled in

我们可以查询在 Course 对象中注册的用户 course:

<em>course</em>.user<strong>.all()</strong>  # users enrolled in <em>course</em>