我有如下模型:
群模型
class Group(model.Model):
name = models.CharField(max_length=100, null=True, blank=True)GroupMember模型
class GroupMember(model.Model):
group = models.ForeignKey(Group, on_delete=models.CASCADE, related_name='group_member_group')
member = models.ForeignKey(User, on_delete=models.CASCADE, related_name='group_member_user')课程模型
class Course(model.Model):
name = models.CharField(max_length=100)GroupCourse模型
class GroupCourse(model.Model):
group = models.ForeignKey(Group, on_delete=models.CASCADE, related_name='course_group')
course = models.ForeignKey(Course, on_delete=models.CASCADE, related_name='group_course')CourseStaff模型
class CourseStaff(model.Model):
course = models.ForeignKey(Course, on_delete=models.CASCADE, related_name='course_staff_course')
staff = models.ForeignKey(User, on_delete=models.CASCADE, related_name='course_staff_user')我想要的是获取特定课程的所有GroupMember模型中不存在的CourseStaff。
例如,:--在Group A中共有5个成员
H 129成员5<代码>H 230<代码>F 231
我总共有2门Group A课程
Course 1有两个成员:
Course 2有两个成员:
我想要的是在查询Member 3-5时从GroupMember获得Course 1
还可以在查询Member 1,4, 5时从GroupMember获取Course 2
我怎么能这么做?
谢谢
发布于 2022-04-20 07:07:20
“我想要的是获得特定课程中不存在于GroupMembers模型中的所有CourseStaff。”
你的模型之间的联系很弱。您希望排除GroupMembers,它不是CourseStaff,但在GroupMembers中,与CourseStaff没有任何关系。您可以在CourseStaff的课程字段上进行操作。但你的课程模式和任何模型都没有关系。您需要在课程模型下添加一个字段来连接一个关系。
发布于 2022-04-20 10:33:31
我就是这么做的。它可能不完美,但它有效。
course_staffs = CourseStaff.objects.filter(course_id=course_id).values_list('staff_id')
members = User.objects.filter(~Q(id__in=course_staffs), group_member_user__group_id=group_id)https://stackoverflow.com/questions/71935058
复制相似问题