在 Django 中访问 ManyToManyField 的值

问题描述 投票:0回答:1

我在我的项目中创建了一个多对多关系,如下所示:

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 类:

user.enrollments.through

<class 'core.models.Course_user'>

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

任何帮助将不胜感激。

python-3.x django django-models many-to-many
1个回答
2
投票

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
© www.soinside.com 2019 - 2024. All rights reserved.