gpt4 book ai didi

postgresql - 多对多关系中的查询集

转载 作者:行者123 更新时间:2023-11-29 12:15:24 24 4
gpt4 key购买 nike

在这个项目中,我们为类里面的学生分配了徽章。

class Badge(models.Model):
klass = models.ForeignKey( # klass means classroom
'klass.Class',
on_delete=models.CASCADE,
related_name='badges',
db_index=True,
)
users = models.ManyToManyField( # the students in 'klass' that have this badge
User,
through='UserBadge',
through_fields=('badge', 'user'),
)

users ManyToMany 字段的自定义中间表:

class UserBadge(models.Model):
user = models.ForeignKey(
User,
on_delete=models.CASCADE,
related_name='taken_badges',
)
badge = models.ForeignKey(
Badge,
on_delete=models.CASCADE,
related_name='assigned_badges',
)
klass = models.ForeignKey( # this classroom is badge.klass
'klass.Class',
on_delete=models.CASCADE,
related_name='assigned_badges',
)

我需要找到与特定 userklass 相关的所有徽章。这样我就可以检索特定教室中特定学生的所有徽章。

我试过了:

Bagde.objects.filter(userbadge__user__id = student_id,userbadge__klass__id=klass_id)

错误是:无法将关键字“userbadge”解析为字段。谢谢。

最佳答案

由于您已将 related_name 设置为 'assigned_badges',因此您应该将过滤器实现为:

Bagde.objects.filter(
<b>assigned_badges</b>__user__id=student_id,
<b>assigned_badges</b>__klass__id=klass_id
)

关于postgresql - 多对多关系中的查询集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57052809/

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