我在我的项目中创建了一个多对多关系,如下所示:
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'>
我无法获得(或在文档中甚至在互联网中找到)的是如何访问此关系中包含的值(用户注册的课程和用户注册课程)。
任何帮助将不胜感激。
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