在 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>
我在我的项目中创建了这样的多对多关系:
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>