gpt4 book ai didi

具有特定键的 Django ManyToMany 反向查询

转载 作者:行者123 更新时间:2023-11-29 13:27:45 25 4
gpt4 key购买 nike

我有两张 table 。第一个是基本用户表。第二个是名为 Section 的表。

def User(models.Model):
...
is_teacher = models.BooleanField(default=False)
...

def Section(models.Model):
...
teachers = models.ManyToManyField(User, related_name="teachers")
students = models.ManyToManyField(User, related_name="students")
is_active = models.BooleanField(default=True)
...

我想获取所有学生用户(在用户表中使用 is_teacher=False 标识),我知道可以使用 User.objects.filter(is_teacher=False) 轻松完成)

我还想获取每个用户的事件部分。

但是,目前,我什至无法为用户获取一组部分

我试过:

students = User.objects.filter(is_teacher=False)
for s in students:
print s.section_set.all()

但是我得到一个错误,User 对象没有 section_set。我猜是因为该部分与 User 表(教师和学生)有两个多对多关系,我可能必须更清楚地指定关系(遵循学生而不是教师)。但我不确定该怎么做。

最佳答案

在定义 related_name 值时,请记住这是向后 关系的名称(在您的情况下 — 从 User)。因此,为了让您的代码清晰易懂,我建议您像这样更改名称:

def Section(models.Model):
...
teachers = models.ManyToManyField(User, related_name="sections_where_teacher")
students = models.ManyToManyField(User, related_name="sections_where_student")
is_active = models.BooleanField(default=True)
...

然后使用关系如下所示:

print s.sections_where_student.all()

关于具有特定键的 Django ManyToMany 反向查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30565721/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com